Update: Generische Factory ist fertig für IIOP und local - jetzt ist der Zeitpunkt mich mit meinem Problem "user is not a server" für internet-sessions zu befassen :-)
Grüße Thomas :-)
------------8<---------(snip)-------------------------------
Edit: den generischen teil werde ich noch ein wenig umstricken...
Kurz was anderes: Ich bekomme ab und an den Fehler:
Notes initialization failure - err 41728
ist bei IBM auch schon durch einen anderen Benutzer gemeldet. Kennt jemand diesen Fehler?
------------8<---------(snip)-------------------------------
Edit: Suche jemanden, der Bock hat, die kleine Komponente zu testen. Mich würde interessieren, ob der Fehler auch bei euch auftritt. JUnit-Testklassen für den Verbindungstest sind vorhanden für:
- GenericSessionFactory (über property konfigurierbar)
- LocalSessionFactory
- RemoteCorbaSessionFactory
- InternetSessionFactory
..eine Test-Suite für alle Tests gemeinsam.
Die InternetSessionFactory wirft aktuell leider den Fehler (user is not a server) bei mir (Notes 8.5.2). Wäre für einen Tester dankbar :-)
Weiter bekomme ich wie gesagt ab und an den Fehler:
Notes initialization failure - err 41728
Wäre auch interessant, wie sich das bei euch verhält?
Grüße Thomas :-)
------------8<---------(snip)-------------------------------
Update: Zwischenstand für potentielle Tester :-)
Die Komponenten ist bisher ein Geflecht aus 16 Klassen und bitet folgende Features:
- NotesThreadPooling über Concurrent-Framework
- 3 Zugriffsmodi (IIOP, http, local)
- Vorhalten einer neuen Session für jeden eintreffenden task
- Recycle der Session nach abgearbeitetem Task
- Konfiguration über property-file
- Junit-Tests (siehe oben)
- Testlauf mit zufälliger ABM :-)
Konfigurierbar sind bisher folgende Optionen:
# access type (IIOP, http, local)
domino.access.type=local
# connection-properties
domino.access.fullAccess=false
domino.access.host=172.30.41.115
domino.access.sslActive=false
domino.access.user=easyxbase easyxbase/comdms
domino.access.password=topS3cr3t
domino.access.inetPassword=topS3cr3t
# Thread-Pool config
#
# domino.threadpool.size - set maximal count of workers for incoming tasks
#
domino.threadpool.size=2
Aktuell in Arbeit:
- generische Rückmeldung von Tasks nach getaner Arbeit über "Callable" statt "Runnable"
ich halte euch auf dem laufenden.
Grüße Thomas :-)
------------8<---------(snip)-------------------------------
Update: callables sind nun auch möglich, bin mir aber noch nicht sicher, wie ich mit der Rückmeldung der Future-Objekte umgehe?
Habe mal testweise 10.000 Tasks über den Thread-Pool mit 50 Threads abarbeiten lassen - sieht soweit gut aus.
------------8<---------(snip)-------------------------------
Update: sessionAchieve hinzugefügt. Über properties kann bestimmt werden, ob die worker (threads) eine erstellte session beibehalten oder nach jedem Task recyclen und neu initialisieren.
Die Komponente deckt jetzt folgende Szenarien ab (exemplarisch):
Single-Threaded mit einer Session:domino.threadpool.size=
1domino.threadpool.sessionAchieve=
trueSingle-Threaded mit jeweils neuer Session:domino.threadpool.size=
1domino.threadpool.sessionAchieve=
falseMulti-Threaded mit einer session / thread für alle tasks:domino.threadpool.size=
50domino.threadpool.sessionAchieve=
trueMulti-Threaded mit jeweils neuer session / thread für alle tasks:domino.threadpool.size=
50domino.threadpool.sessionAchieve=
falseMuss mich jetzt anderen Themen widmen. Denke in der kommenden Woche werde ich folgende Themen angehen:
- Fehlerbehandlung über uncheckedExceptions
- Logging (evtl. über SLF4J)
Habe kein Feedback mehr erhalten, daher bin ich mir unsicher, ob das Thema von Interesse ist.
Falls nicht, bitte diesen Thread schließen.
Grüße Thomas :-)