Domino 9 und frühere Versionen > ND6: Entwicklung
JavaServerAddin Deployment...
Manfred Dillmann:
Hallo Thomas, hallo Axel,
>>Ich werde dort mal schauen, ob ich was finde.<<
Brauchst Dir die Mühe nicht zu machen, da findest Du (noch) nix...
Thomas, zu Deiner Frage:
Da ich (kannst Du im Java-Bereich lesen) bei Java noch am Anfang stehe, kann ich nur schreiben, was ich gemacht habe. Es funktioniert, aber ich finde auch keine Doku dazu.
Ich hatte das Beispiel zum Server-Addin von nsftools.com (.java) übersetzt und die .class-Datei einfach in Domino-Programmverzeichnis kopiert. Dann kann man das an der Domino-Konsole via
load runjava <name-of-classfile w/o extension>
starten. Mit
tell runjava quit oder
tell <name-of-classfile w/o extension> quit
kannst Du das Addin beenden.
Thomas, Du schreibst:
>>Das Teil soll ein ServerSocket zur Verfügung stellen, auf den über den Port der Agent zugreifen kann.<<
Genau sowas benötige ich auch für meinen SMTP Listener. Wenn Du (kannst ja offensichtlich Java) ein Stück weiter bist, wäre ich ein paar Infos zu Deiner Realisierung dankbar. Wenn Du Dir das Beispiel von nsftools.com anschaust, wirst Du sehen, dass alle Aktivitäten des Addins in einer Schleife ablaufen. Ich habe keine Idee, wie ich innerhalb dieser Schleife einen Socket einmalig starte und dieser dann auf Requests "lauscht"...
Gruß
Manfred
P.S. Mit einer JAR-Datei habe ich es nicht probiert.
Thomator:
Hallo Manfred,
ich baue mal weiter an der Lösung und wenn ich das so weit am Laufen habe, meld ich mich noch mal.
Mit dem .jar-file das muss ich eben mal testen, wäre schon unschön, wenn 5327 .class-files im Programmverzeichnis vom Domino runfliegen.
--- Zitat von: Manfred Dillmann am 14.02.05 - 14:03:16 ---habe keine Idee, wie ich innerhalb dieser Schleife einen Socket einmalig starte und dieser dann auf Requests "lauscht"...
--- Ende Zitat ---
Eigentlich muß das Socket nur vor der Schleife instantiiert werden und wenn die Schleife beendet wird, wieder Terminiert. Der Socket-Thread läuft dann unabhängig von der Schleife, die auf die Consolen-Kommandos lauscht.
Aber wie schon gesagt, wenn ich da was zustande bringe, poste ich noch mal.
Thomas
Manfred Dillmann:
Hallo Thomas,
wenn Du eh schon dabei bist, hätte ich noch eine Frage:
In der "Main-Loop" ist im Beispiel folgender Code:
if (AddInDayHasElapsed())
{
AddInSetStatusLine(taskID, "Doing Daily Stuff");
consolePrint(progName + ": Another day has passed...");
AddInSetStatusLine(taskID, "Idle");
}
else if (AddInMinutesHaveElapsed(3))
{
AddInSetStatusLine(taskID, "Doing 10-Minute Stuff");
consolePrint(progName + ": 3 more minutes have gone by...");
AddInSetStatusLine(taskID, "Idle");
}
else if (AddInSecondsHaveElapsed(30))
{
AddInSetStatusLine(taskID, "Doing 30-Second Stuff");
consolePrint(progName + ": 30 seconds, and all is well...");
AddInSetStatusLine(taskID, "Idle");
}
Bis auf AddInDayHasElapsed() sind in der Notes.jar die Minutes- und Seconds-Varianten umbenannt worden. Nicht schön, aber nicht schlimm. Wenn ich mir in Eclipse im Class-Browser? (also da, wo man sich alles in der Notes.jar anschauen kann) die Minutes- und Seconds-Varianten anschaue und diese verwende, sagt Eclispe, die seinen "deprecated". Sie funktionieren noch, man sollte sowas also nicht mehr verwenden, oder?
Ich brauche aber für meinen pop-to-smtp Teil eine Zeitsteuerung für das Abrufen der POP-Konten. Wie macht man das, wenn man die in der Notes.jar enthaltenen Routinen nicht mehr verwenden soll?
Danke für Deine Antwort.
Manfred
Thomator:
Hi Manfred,
normalerweise werden Methoden, die auf 'depracated' gesetzt werden, von anderen abgelöst (aber eben nur normalerweise).
Ich habe selber noch nicht nachgesehen, aber ich könnte mir vorstellen, dass diese Abfragen richtig gut Overhead erzeugen, weil in jedem Durchlauf der Schleife alle Prüfungen vorgenommen werden.
Vielleicht ist das Ganze auch deswegen depraceted gesetzt worden.
Wenn Du immer die gleichen Intervalle zur Abfrage brauchst würde ich empfehlen, diese Methoden ganz außen vor zu lassen, und in das SMTP-Handling in einen extra Thread auszulagern (initialisierung auch vor dem Main-Loop).
Dort dann ein Thread.sleep(Intervall in ms) einbauen. Dann stoppt der ganze Thread für die Zeit und läuft danach einfach wieder einmal durch.
So können in der Main-Schleife die Consolen-Kommandos abgefangen werden und Dein SMTP-Handling ist davon quasi unabhängig.
Allerdings must Du diesen Thread dann beim Terminieren des Addin's auch noch stoppen.
Thomas
qojote:
Hi,
das ist alles sehr interessant.
Bisher wußte ich überhaupt nicht das es die Möglichkeit gibt mit Java addins zu schreiben.
Weiß jemand von euch ob ich damit auch lokale addins für den Client schreiben kann ?
Danke
Gruß
Qojote
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln