Autor Thema: JavaServerAddin Deployment...  (Gelesen 6077 mal)

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
JavaServerAddin Deployment...
« am: 14.02.05 - 11:20:58 »
Hallöchen,
hat schon mal jemand mit JavaServerAddins gearbeitet und kann zum Deployment was sagen?
Dazu scheint es leider keine Dokumentation zu geben und was man so im Internet findet ist zwar für die Programmierung sicher ausreichend, aber wie, in welcher Form und wo muß ich das Ganze denn unterbringen, damit der Domino das Addin findet?

Thomas
+++To be human is more important than to be important!+++

Marinero Atlántico

  • Gast
Re: JavaServerAddin Deployment...
« Antwort #1 am: 14.02.05 - 12:42:43 »
was meinst du damit ungefähr?
Manfred Dillmann hatte letztens auch so etwas. Bezog sich u.a. auf einen Blogeintrag von Julian Robinchaux. Es scheint darum zu gehen, dass man Server-Addins, die man früher als dll geschrieben hat, nun als Java geschrieben werden können. Der Vorteil erschliesst sich mir nicht so ganz. Ich hätte Angst von Memory Leaks ähnlich wie in LS2J (verursacht von Lotus, nicht SUN).
Java gewinnt für den Anwendungsentwickler viel durch vorhandene, standasisierte Infrastrukturen wie etwa J2EE sowie der darauf aufbauenden Frameworks, Literatur, Experten, Internet-Schwätzer, uvam. Lotus hat dann für ihr Domino eigene Sachen mit Java gemacht. Besonders überzeugend finde ich es nicht. Sie selbst offenbar auch nicht, sonst hätten sie sich für Notes 8 aka. Workplace nicht endlich dem gemeinsamen J2EE Standard unterworfen.
Zum Java lernen halte ich Domino wie es zur Zeit ist für eine gänzlich ungeeignete Platform, da man auf zahlreiche low level concerns wie etwa Speichermanagement ohne Garbage-Collector achtgeben muss und es weitere gerade für Anfänger schwer zu durchschauende gotchas gibt (spezielles Class-Loading, Java Securtiy und Notes Security können sich ins Gehege kommen ...> z.B. bei JDBC, eigener uralt xml-Parser bis einschliesslich in R6.5, etc..)
« Letzte Änderung: 14.02.05 - 12:52:41 von Marinero Atlántico »

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: JavaServerAddin Deployment...
« Antwort #2 am: 14.02.05 - 13:00:55 »
Hallo Marinero,

ich sitze immer noch an dem Problem mit den Corba-Sessions aus den Agenten. Da ich auch von notes.net bisher noch keine Antwort habe, suche ich halt nach alternativen Lösungen.

Meine momentan einzige Idee, diesen Zugriff hinzubekommen, ist so ein Server-Addin. Das Teil soll ein ServerSocket zur Verfügung stellen, auf den über den Port der Agent zugreifen kann. Ich denke, aus dieser Umgebung könnte es funktionieren.

Das ist nicht irgendwie der Versuch, Java zu lernen, sondern der echte Versuch, ein Problem zu lösen. Mit Java bin ich schon ein Weilchen zu Gange, was natürlich nicht heißt, dass ich mich da nicht weiterentwickeln könnte ;).

Meine Frage bezog sich auf die Platzierung eines solche ServerAddin's. Also muß es ein .jar-file sein, in welchem Ordner muß es liegen, damit ich es von der Console starten kann, etc.

Leider kann ich dazu nicht wirklich was finden.

Thomas
+++To be human is more important than to be important!+++

Marinero Atlántico

  • Gast
Re: JavaServerAddin Deployment...
« Antwort #3 am: 14.02.05 - 13:04:58 »
Ok. Nimms nicht persönlich. Der Gedanke schwirrt in meinem Kopf herum. 
Frag Manfred Dillmann.
Ich glaub der hat das ans Laufen bekommen.
Hier ist die Webseite: http://www.madicon.de/component/option,com_frontpage/Itemid,1/


Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: JavaServerAddin Deployment...
« Antwort #4 am: 14.02.05 - 13:26:00 »
Sooo persönlich hab ich's ja auch nicht genommen 8).

Besten Dank jedenfalls. Ich werde dort mal schauen, ob ich was finde.

Thomas
+++To be human is more important than to be important!+++

Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 859
  • Geschlecht: Männlich
    • www.madicon.de
Re: JavaServerAddin Deployment...
« Antwort #5 am: 14.02.05 - 14:03:16 »
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.

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: JavaServerAddin Deployment...
« Antwort #6 am: 14.02.05 - 14:32:26 »
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.

habe keine Idee, wie ich innerhalb dieser Schleife einen Socket einmalig starte und dieser dann auf Requests "lauscht"...

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
+++To be human is more important than to be important!+++

Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 859
  • Geschlecht: Männlich
    • www.madicon.de
Re: JavaServerAddin Deployment...
« Antwort #7 am: 14.02.05 - 14:47:55 »
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

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: JavaServerAddin Deployment...
« Antwort #8 am: 14.02.05 - 15:18:57 »
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
+++To be human is more important than to be important!+++

Offline qojote

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • I love YaBB 1G - SP1!
Re: JavaServerAddin Deployment...
« Antwort #9 am: 14.02.05 - 15:22:39 »
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

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: JavaServerAddin Deployment...
« Antwort #10 am: 14.02.05 - 15:30:45 »
Hi qojote,

also das ist dann sicher kein ServerAddin, aber grundsätzlich geht das sicher schon. Allerdings würde ich das dann eher als einen lokalen Server bezeichnen ;D.

Aber wenn Du einen Java-Server (selbstprogrammiert) lokal am laufen hast, können andere Anwendungen (wie auch Notes) damit über den Port sicher kommunizieren.

Allerdings must Du dat Dingen dann eben lokal in einer eigenen VM (JRE) am Laufen haben, was bei dem ServerAddin der Domino für Dich managen würde.

Thomas
+++To be human is more important than to be important!+++

Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 859
  • Geschlecht: Männlich
    • www.madicon.de
Re: JavaServerAddin Deployment...
« Antwort #11 am: 14.02.05 - 15:40:17 »
Hallo Thomas,

danke für die Infos. Ich versuche in diese Richtung zu gehen, bei mir geht es allerdings noch im Schneckentempo voran - ich muss im Moment noch zu viele Details nachlesen.

Egal. Wenn Du neue Erkenntnisse hast - immer her damit...  :)

Gruß
Manfred

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


Offline qojote

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • I love YaBB 1G - SP1!
Re: JavaServerAddin Deployment...
« Antwort #12 am: 14.02.05 - 15:43:07 »
Hi,
danke für deine Antwort.
Eigener Server  :P wäre schön davon bin ich aber noch Meilen entfernt.
Nein ich dachte über ein Addin für den Notes Client nach dort hast du ja auch die Möglichkeit Dlls einzubinden als Addin Task.
Würde das dort mit auch mit Java gehen wäre das doch eine ganz gute Alternative.

Gruß
qojote

Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 859
  • Geschlecht: Männlich
    • www.madicon.de
Re: JavaServerAddin Deployment...
« Antwort #13 am: 14.02.05 - 15:43:32 »
Hallo Qojote,

>>Weiß jemand von euch ob ich damit auch lokale addins für den Client schreiben kann ?<<

Ich kann mir selbst nicht vorstellen, dass es in diesem konkreten Fall geht, Du kannst aber versuchen, die nrunjava.exe des Domino-Servers in Dein Notes Programmverzeichnis zu kopieren und dann von einem DOS-Fenster aus zu starten.

Zumindest für COMPACT, FIXUP usw. funktioniert das.

Gruß
Manfred

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


Marinero Atlántico

  • Gast
Re: JavaServerAddin Deployment...
« Antwort #14 am: 14.02.05 - 15:53:51 »
weiss nicht, ob ich das von Thomas jetzt richtig verstanden habe, aber ich würde auf jeden Fall die SMTP, POP3 Connections zwischen den Aufrufen schliessen und neu erzeugen.
Kann man nicht auf die "Main Loop" selbst Thread.pause(miliSeconds) aufrufen?
Dann bräuchtest du keinen neuen Thread.

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: JavaServerAddin Deployment...
« Antwort #15 am: 14.02.05 - 16:03:17 »
@Qojote
Das ist mit einem Java-Addin glaub ich nicht ganz so einfach, weil das eben nur in einer eigenen VM läuft und nicht so einfach Methoden zur Verfügung stellen kann. Wenn so eine Anwendung in der VM lokal läuft kann man auch über RMI Methoden nutzen.

Allerdings macht das die Sache nicht unbedingt einfacher und performanter.

Ansonsten ist so ein Mini-Server, der ein paar Dienste zur Verfügung stellt, gar nicht so kompliziert.

Nur mal so als Stichworte zum Nachlesen:
Socket und ClientSocket

Da muss man aber auch noch irgendwie absichern, dass sich an diesem Port niemand aus dem Netz bedient, der das gar nicht soll.

Thomas
+++To be human is more important than to be important!+++

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: JavaServerAddin Deployment...
« Antwort #16 am: 14.02.05 - 16:07:05 »
@Axel

da gehe ich mit: Die Connections sollte man schon schließen.

Mit dem Thread.sleep in der Main-Schleife das war auch mein erster Gedanke, allerdings hast Du doch dann ein Problem mit dem Abfangen der Consolenkommandos. Ich denke mal, das wäre nicht so prickelnd, wenn man den Task an der Konsole quittiert und 20 min. später wird der auch beendet ;).

Thomas
+++To be human is more important than to be important!+++

Offline qojote

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • I love YaBB 1G - SP1!
Re: JavaServerAddin Deployment...
« Antwort #17 am: 15.02.05 - 09:00:16 »
@ All

Danke werd ich mir mal anschauen hört sich interessant an.
Gruß
Qojote

Marinero Atlántico

  • Gast
Re: JavaServerAddin Deployment...
« Antwort #18 am: 15.02.05 - 13:07:25 »
Manfred:
Ich würd vom generellen Vorgehen erst einmal 2 standalone Anwendungen erstellen (einfach Kommandozeile, dh mit main-Methode aus Eclipse starten ...unabhängig von JavaServerAddin, etc.).

Dann mit der JavaMailApi versuchen per Pop3 oder IMAP Mails vom Remote Server zu holen und in eine NotesMailDB packen (2. Aufgabe).
Outbound Mails(?) in der Mail.Box(?) per SMTP an den externen Mailserver schicken.

Sobald das einigermassen läuft, kannst du dir Gedanken machen, wie du das in die JavaServerAddin-Umgebung einbindest.
Ich sehe beide Aufgaben als ein bischen unabhängig voneinander an. Und ein Vorteil von Java gegenüber Notes (und EJB) ist, dass man erst einmal getrennt von einem komplexen Produkt entwickeln kann und das später einbinden.

Axel

Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 859
  • Geschlecht: Männlich
    • www.madicon.de
Re: JavaServerAddin Deployment...
« Antwort #19 am: 15.02.05 - 14:26:17 »
Hallo Axel,

danke für Deine Anregungen.

Ich habe z.Z. mit dem "Projekt" Probleme:
- Nach dem Export des Server-Addins in eine JAR (aus Eclipse) kann man dieses nicht mehr via LOAD RUNJAVA starten.

- Ich habe gesehen, dass mit der Beta3 von Domino7 nicht mehr die JARs POP3.JAR und SMTP.JAR installiert werden. Nur noch MAIL.JAR ist vorhanden. Ich weiss nicht ob das an der Beta liegt, aber wenn dem in der Final so wäre, kann ich den POP2SMTP Teil nicht mehr ralisieren. Oder sind die bei 6.5 noch verfügbaren JARs alle in der MAIL.JAR enthalten?

- Ich verstehe die Beispiele (nsftools.com und ein weiteres für Listener) nicht richtig. Das mag Dir lächerlich erscheinen, aber mir fehlt offensichtlich noch viel zu viel Java-Background. In Eclispe debuggen geht nicht, da Server-Addin.

- Losgelöst von Domino geht das Debuggen in Eclispe auch nicht, wenn ServerSockets o.ä. gestartet werden. Ich sehe dann in der Eclipse-Console nur (durch sout's), dass da was läuft und funktioniert - ich kann aber nicht mal erkennen, wie wo wer was warum wann aufruft - komme also kein Stück mehr weiter.

- Ich muss andauernd "jeden Pubs" nachlesen und finde in den eBooks z.T. nicht die richtigen Stellen, da ich im falschen Kontext suche. Das Nachlesen hilft zwar, aber es ist viel Holz und kostet Zeit.

- Ich habe zu wenig Zeit. Muß ja nebenbei noch meine Brötchen verdienen.

Fazit so weit:
Ich bekomme das im Moment nicht gebacken und muss noch viel mehr die Grundlagen von Java sicher beherschen, bevor ich sowas sinnvoll angehen kann. Also doch erst mal Hello World in allen Variationen.

Gruß
Manfred

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz