Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: Manfred Dillmann am 01.02.05 - 15:50:36

Titel: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 01.02.05 - 15:50:36
Hallo zusammen,

vielleicht kann mir jemand auf die Sprünge helfen:

Ich möchte via Java POP-Mails von meinem Provider abholen und per SMTP an meinen Domino-Server weiterleiten. So in etwa das, was der RHPOPConnector auch macht. Ich würde diese Applikation gerne erweitern (Logging der POP-Vorgänge etc.) und nebenbei Java lernen.

So bin ich im Web auf die Java Mail-API gestossen. Der Notes-Client hat offensichtlich die erforderlichen Dateien (mail.jar, mailapi.jar, pop3.jar, smtp.jar, activation.jar) schon im Pfad ...Notes\jvm\lib\ext liegen.

Hierzu ein paar Fragen:
- Wie spreche ich die in den JAR-Files enthaltenen Klassen an, z.B. aus einem Notes-Java-Agenten?
- Wie finde ich eine Beschreibung der verfügbaren Methoden und Eigenschaften dieser Klassen (nach ein paar Stunden auf java.com wusste ich nicht mehr, wonach ich eigentlich suche...)?
- Wie kann man sich geschickt an diese Aufgabenstellung rantasten?
- Vielleicht ein gutes Buch, was diese Thematik im Kontext der Notes-Programmierung behandelt?
- Hat jemand ggf. etwas Beispiel-Code?

Danke für Eure Mühe!

Manfred
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 01.02.05 - 16:45:27
- Wie spreche ich die in den JAR-Files enthaltenen Klassen an, z.B. aus einem Notes-Java-Agenten?
Die sind schon im Classpath (in 6 eben von mir getestet). Musst allerdings Import Statements schreiben.
z.B.:
import javax.mail.BodyPart;
Zitat
- Wie finde ich eine Beschreibung der verfügbaren Methoden und Eigenschaften dieser Klassen (nach ein paar Stunden auf java.com wusste ich nicht mehr, wonach ich eigentlich suche...)?
Die Mail Api ist Bestandteil von J2EE.
Also:
a) Sun Seite: Link J2EE/Server
b) Links auf Seite: Link Documentation
c) Hier habe ich 1.3 ausgewählt (kann aber auch sein, dass im ext-Verzeichnis von Notes 1.2 drin ist.
Zwischenlink: http://java.sun.com/j2ee/reference/docs/index.html
Hier gibt es links einen Link auf Documentation und Api Specification.
(Diese Api Specification kannst du dir auch runterladen. Auch für J2SE gibt es das. Hab beides auf sämtlichen Rechnern mit Bookmark.
d) also: http://java.sun.com/j2ee/sdk_1.3/techdocs/api/index.html

Zitat
- Wie kann man sich geschickt an diese Aufgabenstellung rantasten?
google
Zitat
- Vielleicht ein gutes Buch, was diese Thematik im Kontext der Notes-Programmierung behandelt?
So spezielle Bücher gibt es für die Notes-Programmierung nicht.
Mittlerweile fallen auch bekannte amerikanische Notes-Blogger durch Kathy Sierra/Bert Bates Lobhudeleien auf. Gebt euren Widerstand auf und kauft die Bücher der Head First Serie (Java und Design Patterns). Da steht zwar nix über Mail Programmierung drin, aber eben über Java. Spezifisches über die Java Mail api würde ich wie gesagt erstmal über google suchen. Irgendwo gibt es sicher source code. WICHTIG IST DAS OO MÄSSIGE und Head First Design Patterns ist dafür imho ziemlich ok.
Man kann heute mit Eclipse Notes Java Agenten programmieren. Das ist wirklich viel besser und sowieso der Client von Notes6. Quojote hat irgendwo in diesem Forum den Link gepostet. Vor nicht allzu langer Zeit
Zitat
- Hat jemand ggf. etwas Beispiel-Code?
leider nicht. vielleicht finde ich was. try google.

Axel

Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 01.02.05 - 17:06:28
Hallo Axel,

danke erst mal für Deine Antwort.

>>Die sind schon im Classpath (in 6 eben von mir getestet). Musst allerdings Import Statements schreiben.
z.B.:
import javax.mail.BodyPart; <<

Frage "ausser der Reihe":
Wenn man (z.B. vom Drittanbieter) ein .JAR File hat und importiert das in einen Notes-Agenten - wie spricht man in einem solchen Falle die enthaltenen Class-Files an? Da ist ja nix mit Classpath... oder geht sowas überhaupt nicht? Importieren der .JAR's geht auf jeden Fall...

P.S.
Ich habe mir wahrscheinlich zwischenzeitlich schon einen Wolf "gegoogled". Ich probiere jetzt mal Deine Links.

Danke dir

Manfred



Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 01.02.05 - 18:07:27
Auch mit import, weil diese Klassen eben auch im Classpath sind.

Jar ist einfach eine Ansammlung an .class (und anderer) Dateien. Wenn die jvm das jar sieht, kommt sie auch an die class-Dateien. Darüber braucht man sich keine Gedanken zu machen. Jars sind leicht zu erstellen.

(das folgende enthält u.U. kleinere Fehler, die Richtung stimmt aber)
Der Classpath wird durch sog. Classloader zusammengestellt.
Die Classloader in Notes (und auf anderen Systemen) befinden sich auf unterschiedlichen Ebenen.
1.  der Bootstrap Classloader (java.lang.String und sowas richtig wichtiges)
2. die files in dem ext\lib Verzeichnis
3. die durch JavaUserClasses in der Notes.ini referenzierten Class-Dateien und jars.
4. ein paar notes typische jars wie mein "Freund" xml4u.jar im Notes-Programm-Verzeichnis.
5. Pro Agent kann man jars und meiner Ansicht nach auch Klassen direkt einhängen (Projekt bearbeiten).

Bei gleichnamigen Klassen (z.B. eine Klasse de.aja.StringUtil in 2. und in 4.) wird immer die in 2. geladen, also die weiter oben in der Hierarchie (in WAS gibt es eine Möglichkeit das umzudrehen, aber das nur am Rande).
Die in 5. sind Agent spezifisch. 1.,2.,3. und 4. gelten ja für den ganzen Server.
 
Man kann auch in einer Anwendung auch einen zusätzlichen eigenen Classloader basteln (auch das nur am Rande und ich habs noch nicht gemacht).
Classloaders können nicht nur in Domino schwer zu verstehende Effekte haben. Es ist aber heute weitgehend bekannt.

Axel
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 01.02.05 - 18:30:18
Hallo Axel,

vielen Dank für die (wie immer) klasse Info!

Mal schauen, wie weit ich komme...

Gruß
Manfred
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: eknori am 01.02.05 - 18:34:16
Hey Manfred,

 8) dann mache es gleich richtig und baue eine Tool, daß sowohl POP3 Konten abfragen kann, als auch das SMTP AUTH ersetzt. Dann kann man sich das ´Gedaddel mit pullmail und Co sparen   :D
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 01.02.05 - 18:41:13
Hallo Ulrich,

hörst Du inzwischen wieder was?  ;)

>>sowohl POP3 Konten abfragen kann, als auch das SMTP AUTH ersetzt.<<

Dann müsste das Tool ja quasi ein SMTP-Server sein. So mit Listener-Task. Du willst ja Deine Mails vom Domino-Server dort "abgeben" (quasi Relayen) und das Tool sollte das dann mit Auth beim Provider abliefern, richtig?

Feine Idee, aber ich bekomme im Moment nicht mal den "einfachen Teil" gebacken...

Manfred
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: eknori am 01.02.05 - 18:53:26
du machst das schon, da habe ich gar keine Zweifel  :D
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 01.02.05 - 19:12:28
es gibt schon ein paar Beispiele.
Z.B.:
http://www.ftponline.com/javapro/2004_01/online/javamail_kjones_01_28_04/

Ich würde darüber nachdenken es erst einmal ausserhalb von Notes (Eclipse) zu machen.
Dann die Klassen in ein jar packen und in das Projekt importieren.

Die Klassen haben einen Konstruktor mit public. Und ein paar public Methoden, die von dem Notes-Agenten angesprochen werden.

Alles was du in Eclipse in das Projekt importieren musst, sind die notes.jar sowie die paar extra Mail-jars, die du ja schon gefunden hast.

Gruß axel
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 01.02.05 - 19:42:41
Noch ein paar interessante issues zum classloading:
Classloaders kann man sich als so eine Art java.util.HashMap vorstellen.
Ein bischen wie List in LotusScript.
Also jede Klasse hat einen key, unter der sie referenziert werden kann (und dann geladen). Der key ist der Name. Also z.B. java.util.Map ist key und value ist die ganze Klasse mit diesem Namen.
Die Klassen werden nicht direkt geladen, sondern wenn sie benötigt werden.

Sobald du sowas machst wie
Code
StringBuffer buf = new StringBuffer();
beginnt die VM die HashMaps der Classloader zu durchforsten, ob sie die Klasse StringBuffer irgendwo finden kann.
Sie fängt mit dem untersten Classloader an. (s.o. 1. Bootstrap ClassLoader).
Sie findet java.lang.StringBuffer im untersten Classloader (java.lang.* steht implizit in jedem Import) und läd die Klasse.

Eine Klasse de.img.util.PropertiesFile wird vielleicht erst im 4. oder 5. Classloader gefunden.
Wird eine Klasse gar nicht in den ClassLoadern gefunden, wird eine ClassNotFound Exception geworfen.
Anfänger denken manchmal, dass die Anwendung schneller wird, wenn man die import statements so definiert:
Code
import java.util.*;
statt:
Code
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
import java.util.HashSet;
Das ist nicht schneller. Die Klasse wird tatsächlich erst geladen, wenn sowas wie
Code
StringBuffer buf = new StringBuffer();
da steht.

Jede Klasse spezifisch zu importieren ist sogar deutlicher. Ausserdem bieten moderne IDEs auto-completion features an, so dass kein Mensch mehr import statements schreibt, sondern z.B. bei Eclipse auf die gelbe Glühbirne klickt.

Es gibt ein teuflisches gotcha im Kontext von hot-deployment auf J2EE Servern, aber das sag ich jetzt nicht.

Axel
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 01.02.05 - 20:08:59
Hallo Axel,

nochmals vielen Dank. Schade, dass wir beide in Sachen Java leider Lichtjahre auseinander stehen. Du gibts so tolle Hilfestellungen und ich kann aus dem Stand nahezu nichts davon sauber einsortieren und nutzen.

Muss mich jetzt mit Java wieder intensiver beschäftigen - nach meinen Erfahrungen mit dem MemoryLeak (LS2J) in meinem RSS Reader habe ich Java leider ziemlich links liegen lassen.

Auf ein Neues!  :)

Gruss
Manfred
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 01.02.05 - 21:36:58
Hallo Manfred,

ok. das ist irgendwie schon advanced stuff und es ist nicht unbedingt leicht einzuordnen.

Axel
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 02.02.05 - 13:06:04
Hier ist Anfängerlink: http://mindprod.com/jgloss/jgloss.html
echt wahr. ich schwöre.  :D
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 02.02.05 - 13:22:39
Hi Axel,

>>echt wahr. ich schwöre.<<

Wohl war. Alleine die Links hinter "Getting started" reichen bis zur Rente...  ;)

Danke für den Link. Muss ich mir in Ruhe anschauen.

Gruß
Manfred
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 02.02.05 - 15:10:58
weil die Sprache so gut ist, hat man eben viel Zeit zum lesen.  :P
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 03.02.05 - 11:55:37
Hallo Axel,

weil die Sprache so gut ist, hat man eben viel Zeit zum lesen.  :P

mache ich jetzt in Nebenzeiten, aber von Grund auf - meine Güte, das ist eine Menge Holz...

Ich hätte noch eine konzeptionelle Frage:
Ulrich hatte ja die Idee, direkt noch einen Ersatz für SMTP Auth einzubauen. Ich müsste also einen Listener-Task nachbauen der nach einem Start konstant läuft, auf Requests wartet und nebenbei in einem einstellbaren Zeittakt den POP2SMTP Teil erledigt. Ich bin z.Z. noch nicht in der Lage, eine einzige Anforderung zu Coden, daher zielt die Frage nur in Richtung der Realisierbarkeit.

1. Domino-Agent auf dem Domino-Server
Scheidet nach meinen bisherigen Überlegungen aus. Der Agent terminiert ja (oder sollte das tun) und dann ist mein Listener-Task weg. Der muss aber wohl konstant laufen.

2. Tool as Addin-Task auf dem Domino-Server
Julian Robichaux auf auf nfstools.com ein Beispiel, wie man für den Domino-Server ein Java-Addin (load runjava ...) programmieren kann. Allerdings schreibt er, dass sowas zumindest unter R5 undokumentiert ist. Ich finde auch keine weiteren Informationen was den Einsatz unter ND6 angeht. Scheint auch nicht der richtige Ansatz zu sein.

3. Eigenständiges Tool
Im Javabuch.de bin ich auf die Klasse "ServerSocket" gestossen. Durch das Beispiel dort (SimpleEchoServer.java) konnte ich sehen, dass man auf dieser Basis einen Server (egal für welche Requests) realisieren kann. Das klingt bislang für mich nach der einzig realisierbaren Möglichkeit, aber:

Wenn ich sowas programmieren könnte und hätte ein fertiges .class File, wie kann ich das auf dem Domino-Server starten?
- Müsste ich auf der Maschine eine JRE installieren?
- Könnte ich das mit der Domino-JVM starten?
- Wenn ja, wie?

Zudem wäre es fein, wenn ich auf eine Konfigurations-NSF zugreifen könnte, um z.B. die definierten POP-Konten usw. in einer Notes-Datenbank verwalten zu können.

Vielleicht  Bestimmt hast Du ein paar Ideen. Danke schon mal für Deine Mühe...

Gruß
Manfred
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 03.02.05 - 13:07:22
Hallo Manfred,

Domino Server Tasks sind wohl leichter in C zu schreiben. Falls es mit Java geht würden die einfach nur die C-Funktionalität einwickeln und ein extra eigenes Interface dafür haben. Genau in diesem Zusammenhang läufst du aber wieder in ein Memory Leak Minenfeld, das mehr mit der Qualität von Java Wrappern von Lotus zu tun hat als mit Java selber (s. Diskussion auf blog von Ben Poole). LS2J ist jedenfalls ein mittlerer Skandal.
Eine tiefergehende, nicht ganz perfekte Erklärung der Java Seite ist hier (mein Posting): http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=3&t=007112
Früher ist bei ähnlichen Aktionen von mir immer Peter den Haan oder Thomas Paul gekommen und hat mich verbessert. Die lassen auch nach.  >:(

Dann dürfte das mit dem Listener, der seine Notifikation an einen Client (also verteilt) sendet, sowieso ziemlich komplex sein. Das geht sicher sehr gut mit Corba  ;D
Ich fänds echt Klasse, wenn ich endlich jemanden kennen würde, der sich ernsthaft in Corba einarbeitet. Mir war das bisher immer zu komplex. 
eine dagegen einfachere Möglichkeit wäre auf dem Client eine Art Webservice-Server zu installieren, der vom Mail-Server Nachrichten geschickt bekommt (keine schlechte Idee, möglicherweise überschätzt du die Komplexität Webservices zu programmieren).

Noch einfacher und auf jeden Fall zu bedenken: Geschedulter Prozess vom Client der alle 5 Minuten den Mail Server auf neue Nachrichten pollt. Es gibt doch jetzt zeitgesteuerte Agenten vom Notes-Client?
Oder ein open Source Projekt namens quartz und da gibt es noch eine einfachere Alternative. Quartz ist nicht schwierig.

Axel
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 03.02.05 - 13:45:45
Hallo Axel,

erst mal Danke für Deine Antwort.

Zitat
hat als mit Java selber (s. Diskussion auf blog von Ben Poole). LS2J ist jedenfalls ein mittlerer Skandal.

Ich habe Deine Posts auf Bens Seite gelesen. Ich bin nicht so bekoppt, dass ich noch mal was mit LS2J anfange. Ich möchte alles in Java machen.

Ich lese aus Deiner Antwort (kann mich auch täuschen), dass Du den Fokus der geplanten Anwendung noch nicht erfasst hast:

Alle geplanten Aktivitäten beziehen sich auf den Domino-Server, der Notes-Client ist nicht beteiligt.

1. POP3-to-SMTP
Wer (wie ich seit Anfang dieses Jahres) seinen Domino-Server nicht mehr "scharf" im Web stehen hat, sondern ein Hosting-Packet einen Providers nutzt (ist übrigens gar nicht schlecht: nix mehr mit eigenverantwortlichem 24x7 Betrieb, ich habe in meinem Packet auch SPAM-Filter und Virenscanner), wird seine Mail via POP3 von den Konten holen und via SMTP an seinen Domino-Server weitergeben. Der Domino-Server kann das nicht von Haus aus.

DAS kann man durchaus mit einem Domino-Java-Agenten und der Java-Mail-API machen. Hab's nur gerade noch nicht fertig.  ;)

2. SMTP-Mails mit Auth beim Provider abgeben (Ulrich ist schuld)
In der o.g. Konstellation muss/sollte (OK, ich sende z.Z. direkt, geht auch) man seine SMTP-Mail beim Provider "abliefern" (Relay), der sich dann um den weiteren Transfer der SMTP-Mail kümmert. Im Prinzip das, was ein stand-alone eMail-Client auch macht, wenn er eine eMail versenden möchte.

Die Provider verlangen eine Authentifizierung und das kann der Domino-Server auch nicht selbst. Also muss man seinen Domino-Server so einstellen, dass er alle Mail bei einem Tool abliefert, welches dann die SMTP-Mails mit Auth beim Provider abgibt.

Soweit der Hintergrund. Ich brauche also eine Lösung, die Punkt 1 und 2 abdeckt.

1 könnte man mit einem Java-Agenten machen. Der terminiert aber. Für 2 müsste ich einen (einfachen) SMTP-Server nachbilden. Der nimmt die Mails vom Domino-Server und gibt sie mit Auth beim Provider ab.

Wenn Du unter diesem Aspekt noch mal meinen letzten Post liest, wird die Aufgabenstellung bestimmt klarer.

Der wesentliche Knackpunkt scheint für mich zu sein:
Wie bekomme ich so ein Java-Teil (was auch immer das genau sein mag...) auf dem Domino-Server gestartet, welches

- im einstellbaren Zeittakt den POP-2-SMTP Teil macht
- nicht terminiert und einen SMTP-Server miemt?

Die Kernfrage aus meinem letzten Post:
Zitat
Wenn ich sowas programmieren könnte und hätte ein fertiges .class File, wie kann ich das auf dem Domino-Server starten?
- Müsste ich auf der Maschine eine JRE installieren?
- Könnte ich das mit der Domino-JVM starten?
- Wenn ja, wie?

Gruß
Manfred
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 03.02.05 - 15:02:16
vielleicht kann apache.James diese Authentifizierung gegen den Provider. Dann würdest du die Mails von Domino an James leiten und der James gibt sie dann an den Provider weiter.
Wenn Julian Robinchaux das geschrieben hat, lässt sich das doch ausprobieren.
Schick mal den Link.
Vermutlich kannst du die Klassen als jars irgendwo im Server ablegen und irgendwie da an den richtigen Stellen bekanntmachen.
Als vm würde dann wohl die vom Domino Server benutzt. Der hat ja eine.
James ist vielleicht eine ernsthafte Alternative.

Gruß Axel
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 03.02.05 - 15:17:52
Hallo Axel,

>>vielleicht kann apache.James diese Authentifizierung gegen den Provider.<<

Ich wüsste noch nicht, wie ich das programmieren muss, was ich aber gelesen habe sagt aus, dass man das mit JavaMail API machen kann.

Hey, ich will doch selbst was programmieren und nicht so nen armen Buttler James "einspannen".  ;D

>>Wenn Julian Robinchaux das geschrieben hat, lässt sich das doch ausprobieren.<<

Er hat geschrieben:
Zitat
Keep in mind that using the the lotus.notes.addins.JavaServerAddin class from Notes.jar is totally unsupported functionality (at least in R5), so you are using it at your own risk. Normal caveats apply.

>>Schick mal den Link.<<

http://www.nsftools.com/tips/JavaTips.htm#javaaddin

>>Als vm würde dann wohl die vom Domino Server benutzt. Der hat ja eine.<<

Stimmt. Aber das war ja meine Frage: Auf dem Domino-Server "gammelt" so ein JAR rum. Das kann alle Anforderungen aus sich heraus. Wie starte ich sowas auf dem Domino-Server?

Es gibt ja Dinge, die via laod runjava laufen, z.B. den ISpy - Task. Aber da finde ich kein passendes JAR auf der Pladde...

Gruß
Manfred
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 03.02.05 - 15:38:25
Hey, ich will doch selbst was programmieren und nicht so nen armen Buttler James "einspannen".  ;D
imho falsche Einstellung. Du und ich werden vermutlich sowieso nie so viel Wissen über Mailprogrammierung haben, wie die Leute, die James geschrieben haben. Very un-java.

Versuch mal Julians Klasse in das Notesprogrammverzeichnis zu legen und das von dort zu laden wie er es beschrieben haben. Das könnte funktionieren.
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 03.02.05 - 17:09:32
Hallo Axel,

>>Du und ich werden vermutlich sowieso nie so viel Wissen über Mailprogrammierung haben, wie die Leute, die James geschrieben haben. Very un-java.<<

Zumindest für meine Person hast Du da bestimmt recht. Das ist ja auch nicht mein Ansinnen.

Axel, ich möchte das nicht mit "dicken Zusatztools" lösen. Ich will doch in Java ein Stück weiterkommen und beim selber-stricken mit konkreter Anforderung kann ich am schnellsten lernen.

Wenn ich nur eine Lösung wollte, hätte ich mir eine fertige Windows-DLL gekauft (gibts für ein paar Euros) und das ganze mit LotusScript abgefakelt und wäre schon lange fertig.

>>Versuch mal Julians Klasse in das Notesprogrammverzeichnis zu legen und das von dort zu laden wie er es beschrieben haben. Das könnte funktionieren.<<

Leider nicht. Beim Start auf dem Domino-Server kommen Meldungen, dass bestimmte Methoden verschiedener Klassen nicht gefunden werden und danach terminiert "runjava" wieder. Es verbleibt aber was geladen (show tasks) und ich musste den Domino-Server neu starten. Ist mir im Moment zu heiss....

Gruß
Manfred
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 03.02.05 - 20:07:53
Hi,

Ich sehe James nicht als dickes Zusatztool, sondern als Mailserver-Implementierung gegen die sich zumindest openSource nichts anderes durchsetzt.
Das sind auch nicht so LEI/DWF mässige Zusatztools sondern Dinge die funktionieren.
Programmierpraxis in Java ist aber zumindest für mich in weiten Teilen eine Mischung aus Toolnutzung, Systemadministration und Programmierung.
"Dicke Zusatztools" benutzen Leute, die sich auf ihrer dollen Websphere Entity EJB Lösung darüber freuen, dass sie die Responsivität einer bestimmten Seitenabfrage von 45 auf 32 Sekunden gedrückt haben und schliesslich ist das alles kein Problem. Nein. Nein. Schliesslich ist der 4 Gig Testserver nicht in einem Cluster. Die finde ich auch bedenklich und ich glaub es gibt sie. James ist eine ganz andere Geschichte.
Als Lernprojekt ist das imho fast ein bischen aufwendig und es existiert Frustrationsgefahr, weil wie gesagt Java auf Domino noch seine Tücken hat.

Als reines programmieren im Sinne von Algorythmen coden gibt es ja auch nicht so wahnsinnig viel her gegenüber LotusScript.
Ob du jetzt:
Code
if (int i==0) {
// oder 
if i = 0 then
schreibst, ist ja auch nicht so spannend.
Spannend sind imho gerade diese Zusatztools, Frameworks, OO-Konzepte, Projektsteuerungsmethoden, Testmethoden, OR-Mapper, uvam..

Ist für dich Eclipse auch ein fettes Zusatztool  ???
Dazu würde ich im jeden Fall auch Umsteigertestern raten, da es auch das Lernen einfacher macht und viele wirklich triviale Arbeiten wie z.B. import statements schreiben, Methoden umbenennen, kompilieren, uvam schlicht und ergreifend automatisiert.
Java ist ohne Eclipse und Zusatzzeugs eine eher geschwätzige Sprache. Das überzeugende sind aber diese Zusatztools, da sie in Sachen Transparenz, Ernstnehmen des Users und Stabilität so Dingen wie LEI und DWF imho turmhoch überlegen sind.

Ich bin ganz sicher kein brillianter Hacker. Aber genau deshalb mache ich Java und nicht C.

Gruß Axel
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 03.02.05 - 20:24:25
Hallo Axel,

>>Ist für dich Eclipse auch ein fettes Zusatztool<<

Nö, das ist doch eine IDE. Als "fettes Tool" würde ich ein JAR bezeichnen, wo schon alles drin ist und man nur ein paar Funktionen aufruft und man hat fertig.

Ausserdem - ich will (oder muss) doch die JavaMail-API verwenden. Das hält einem doch auch die Low-Level-Sockets-Geschichten vom Leib...

Natürlich betrachtest Du das mit Deinem Java-Knoffhoff ganz anders als ein Einsteiger. Und ich kann auf dieser Ebene doch (noch) garnicht mit Dir diskutieren...

Axel, ich muss noch was fragen:
Ich konnte das Teil von nsftools jetzt selbst übersetzen (musste ein paar Zeilen auskommentieren) - jetzt läuft es auf meinem Domino-Server.

Merkwürdig hierbei, das ein

SET CLASSPATH=C:\Lotus\Notes

zum Zugriff auf die Notes.jar  nicht ausreicht. Erst mit

SET CLASSPATH=C:\Lotus\Notes\Notes.jar funktioniert das.

Die Variable heisst doch CLASSPATH und nicht CLASSFILE. Wir auch in allen Büchern immer nur auf die Pfade verwiesen.

Warum ist das bei der Notes.jar so?

Manfred
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 03.02.05 - 20:50:44
Hi,

wenn du den Classpath im OS setzt, benutzt du kein Eclipse  ;D oder du benutzt Eclipse falsch.

Für die OS-Classpath Variable ist es normal, dass man das jar direkt referenziert. Eine jar Datei ist im Prinzip eine Verzeichnisstruktur. Du kannst es ja mit Winzip oder anderen Tools öffnen. Wenn du es dir anschaust, ist es offensichtlich ein Verzeichnis.
Z.B. in Notes eingebettete OLE-Objekte sind im Prinzip auch Verzeichnisse.

Gruß Axel

Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 03.02.05 - 21:10:59
Axel,

danke für die Erklärung bzgl. CLASSPATH.

>>wenn du den Classpath im OS setzt, benutzt du kein Eclipse<<

Ich habe das auf die schnelle mit javac und DOS-Box gemacht. Mein altes Eclipse war so ca. Version 2.2 von Anfang letzen Jahres. Hatte ich nach dem Frust mit LS2J von der Platte geputzt. Ich ziehe mir aber jetzt die aktuelle Version.

Ich habe immer mal wieder Fragen, wenns Dir zu blöde wird, einfach nicht mehr antworten, OK?

1. Da gibt es schon eine Exlispe 3.1 M4. Kann man die benutzen oder lieber die 3.01?

2. Wenn ich ein 1.4.2.x JDK verwende (oder die 1.5) und übersetze damit eine .java - kann man die dann unter der 1.3.x des 6er Domino-Servers gefahrlos laufen lassen? Gibt es nur Stress, wenn man Klassen aufruft, die es in der älteren Runtime noch nicht gab oder es generell immer zu empfehlen, nur mit der Version der Ziel-JVM zu arbeiten? Bekommt man in diesem Falle denn die alten JDKs noch bei Sun?

Gruß
Manfred
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 03.02.05 - 21:22:40
1. Da gibt es schon eine Exlispe 3.1 M4. Kann man die benutzen oder lieber die 3.01?
evtl. einfach beide und erstmal die 3.01 benutzen.
Mit 3.1 M4 geht Java 1.5.
Du kannst immer problemlos mehrere Eclipse installiert haben, weil die sich ja nirgendwo in die Registry schreiben.
Sammle auf jeden Fall nicht zu viele plug-ins,  da die oft buggy sind weil die Leute das zum Lernen benutzen. Deshalb vertragen die sich teilweise nicht.
Ich bin auf myEclipse umgestiegen. Ist eine Art plug-in Bündel von Experten zusammengestellt und kostet 30$ im Jahr inklusive Support.

2. Wenn ich ein 1.4.2.x JDK verwende (oder die 1.5) und übersetze damit eine .java - kann man die dann unter der 1.3.x des 6er Domino-Servers gefahrlos laufen lassen?
Mit 1.5 wäre ich vorsichtig, weil es da viel Wandel gibt.
Zwischen 1.4 und 1.3 hat sich meiner Ansicht nach nur in Spezialgebieten was getan, die du eh nicht berühren solltest. Das sollte schon gehen. Ansonsten gibt dir Domino eine ClassNotFoundException aus.
Die alten VMs gibt es noch bei Sun: http://java.sun.com/products/archive/

Du kannst auch bei Eclipse die VM des Projekts wechseln. Weiss momentan nur nicht auswendig wo.
 
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 03.02.05 - 21:37:38
Axel,

wie immer vielen Dank für die Infos.

Keine Angst: Wo ich noch nicht mal ansatzweise weiss, was Eclipse "native" kann, werde ich bestimmt keine Plugins verwenden.

Gruß
Manfred
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 04.02.05 - 10:06:04
Ich empfehle dieses günstige Eclipse Buch. Ist sehr gut und pragmatisch:
http://www.sourcebeat.com/TitleAction.do?id=2
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 04.02.05 - 10:40:02
Hi Axel,

danke für den Link.

Ich werde mich jetzt erst mal (so wie ich eben Zeit abzwacken kann) mit Java selbst beschäftigen. Schön an Eclipse ist für meine jetzigen Belange die Möglichkeit zum Debuggen und das bessere Coden als in Notepad. Mehr brauche und verstehe ich noch nicht. Bring doch nix, wenn ich mich über 1.000 Seiten IDE-Beschreibung hermache und kenne Java nicht. Immer schön Schritt-für-Schritt.

Wenn ich mich nicht täusche, hatte Matthias (TMC) geschrieben das er laut seinem Buch "Head First Java" zunächst überhaupt keine IDE verwenden soll. Das lenkt zuviel von den grundlegenden Zusammenhängen ab - vieles passiert (was Du ja lobst) bei einer guten IDE im Hintergrund automatisch. Sicher schön, wenn man (wie Du) alle Zusammenhänge kennt und versteht, was die IDE da macht. Da hilft das sicherlich viel. Wenn man aber die Grundlagen nicht kennt, fühlt man sich noch mehr verloren als beim Einsatz von Notepad und javac.

Deshalb auch mal ein klein wenig Kritik (Du bist ja hart im nehmen): Du selbst bist einfach zu gut in Java und kannst Dir nicht mehr vorstellen, wie das ohne Dein Wissen als echter Anfänger ist. Da kann man sicht nicht parallel mit x Aspekten beschäftigen - sonst wirft man einfach das Handtuch...

Es gab mal von Rob Green vor ganz langer Zeit hier einen Thread wo der Robert Mitstreiter gesucht hat. Da haben sich etliche, hier bekannte Grössen gemeldet und ihr Interesse bekundet. Nach dem Thread was Schluss und viele haben es sein lassen.

Da ich das von mir selbst kenne, suche ich immer nach einer Aufgabe und versuche die dann Schritt-für-Schritt umzusetzen. Dann kann man am Ball bleiben und auch was lernen.

So, jetzt muss ich noch was arbeiten...  ;)

Gruss
Manfred

Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 04.02.05 - 11:05:59
Axel,

eine Frage hätte ich noch:

Stimmt es, dass man für Eclispe ein installiertes JRE benötigt? Kann Eclipse für das Debuggen nicht die java.exe aus dem JDK verwenden?

Gruß
Manfred
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 04.02.05 - 13:32:09
Manfred,

das sind lediglich Vorschläge.
Es gibt auf der Ranch immer mal wieder Diskussionen, ob Anfänger Eclipse (oder JBuilder oder InteliJ IDEA) benutzen sollen oder nicht.
Kathy und Bert (die Autoren von HF Java) vertreten da mit ihrem Ansatz eine Minderheitenmeinung.
Eclipse ist eine nach wesentlich stringenteren Ergonomie-Prinzipien entwickelte GUI als etwa Lotus Notes. Eclipse ist einfach transparent, d.h. man sieht immer was Eclipse mit dem Quelltext macht.
Nicht nur meiner Meinung nach gibt Eclipse Lernhilfen für den Umgang mit Java.

Das Sourcebeat Buch ist schrittweise aufgebaut und richtet sich an Anfänger. Man kann das direkt ausprobieren. 

Bzgl. der Abgeschreckten: Solche Leute haben imho einfach zu viel Respekt vor ihrem eigenen Beruf.  ;D

Gruß Axel
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 04.02.05 - 14:03:50
Stimmt es, dass man für Eclispe ein installiertes JRE benötigt? Kann Eclipse für das Debuggen nicht die java.exe aus dem JDK verwenden?
Wenn mich nicht alles täuscht wird mit einer JDK Installation automatisch ein JRE mitinstalliert.
Jedenfalls:
- jsdk ist in Ordnung
- Eclipse sucht es sich beim ersten Starten automatisch
- Du kannst es dort editieren, wo solche globalen Einstellungen gesetzt werden:
Windows/Preferences im Menü.
Und hier: Java/Editor/Installed JREs (bei mir steht da aber der jsdk-Pfad drin. Kann sein, dass ich dies manuell geändert habe.

Gruß Axel
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 04.02.05 - 14:13:42
Hallo Axel,

>>- jsdk ist in Ordnung<<

Danke. Ich werde wohl jetzt am Wochenende mal Eclipse installieren.

Daher noch folgende Frage:
Kann Eclipse "Java reflection"? Wenn ich richtig gelesen habe:
- ist das eigentlich eine Java API
- aber in manchen IDE´s schon enthalten

Ich brauche das, um die Klassen usw. in der Notes.jar zu erkunden, oder?

Die für das Server-Addin benötigte "JavaServerAddin class" ist ja in der offiziellen Doku nicht enthalten, richtig?

Danke und Gruß
Manfred
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 04.02.05 - 14:43:07
Danke. Ich werde wohl jetzt am Wochenende mal Eclipse installieren.
Du meinst: Entpacken.

Kann Eclipse "Java reflection"? Wenn ich richtig gelesen habe:
- ist das eigentlich eine Java API
- aber in manchen IDE´s schon enthalten
Wer schreibt sowas?
Die Klassen für Reflection ist Bestandteil von core Java (jsdk, jre).
Eclipse ist ein Java Programm. Also benutzt es die Reflection Api.
Bei Manning gibt es dazu ein  :-X
Handbuch der Java Programmierung (google: Javabuch, frei), Kapitel 43.
Quasi die Möglichkeit aus Java Bytecode die Methoden und Eigenschaften von Klassen auszulesen sowie Klassen zur Laufzeit (nicht Compilezeit) zu instantiieren, aufzurufen. Ist aber ein bischen advanced. Kann man aber auch normaler Programmierer auch sinnvoll einsetzen. Mach bisher nur die Basic-Sachen damit.
Formelsprache in Skript zu benutzen erinnert mich ein bischen daran.

Du denkst ein bischen zu kompliziert, imho. Eclipse ist wirklich sehr einfach zu bedienen, wenn man ein paar grundlegende Sachen verstanden hat (wie z.B. auf den reichlich bebilderten ersten 200 Seiten im Source-Beat Buch beschrieben). Du musst notes.jar einfach nur im Projekt einbinden über rechte Maustaste auf Projekt, Properties wählen.
In dem Dialog unter dem Tab Java Build Path, Add External Jar und dann auf der Festplatte notes.jar suchen und ok drücken.
Durch Reflection kann Eclipse dann die öffentlichen Methoden der Notes Interfaces auslesen.

Wichtig ist, dass du nach dem starten von Eclipse in die Java Perspektive wechselst (rechts oben).
Erst kommt da ein merkwürdiger screen. Dort Escape und dann rechts oben in die Java Perspective wechseln.
dann der linke Smarticon. Hier Projekt wählen. Klasse erstellen einfach über smarticons. Kompilieren geht über klicken auf den speichern-Button.
Die gelben Birnen links sind Hilfestellungen, um typische Fehler im Text des Source codes transparent zu ändern. 

Es ist verdammt einfach.

Axel
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 04.02.05 - 15:01:56
Hallo Axel,

Zitat
Wer schreibt sowas?
Das haben die ersten Google-Treffer geliefert. War aber wieder erschlagend viel Info - deshalb habe ich Dich gefragt...

Zitat
Bei Manning gibt es dazu ein  :-X
Was bedeutet das Symbol. Verstehe ich nicht... darf man darüber nicht sprechen/schreiben?

Gruß
Manfred


Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 04.02.05 - 16:25:32
Das Symbol ist, weil ihr euch immer gleich erschlagen fühlt.  ;D

Ich werde wohl jetzt am Wochenende mal Eclipse installieren.

nimm bei der Auswahl des Mirrors von downloads auf eclipse.org Aachen und nicht Wien. Wien ist a) unübersichtlich und b) sehr langsam.
Entpacke gerade Eclipse3.1_M4

Falls du die Sun Dokumentation nicht hast, installiere sie:
http://java.sun.com/j2se/1.4.2/download.html (documentation download in der Mitte).
Einfach entzippen und irgendwo auf die Platte tun. Sind einfach nur sehr, sehr, sehr viele html Seiten.  (sowohl download als auch entzippen langsam. Viele kleine Files).
Ich würd jetzt nicht unbedingt mit Java5 anfangen. Das kannst du ja nächste Woche installieren.
Das File index.html (root) aus dem Download öffnen. Dann:
 
API & Language Documentation 
        Java 2 Platform API Specification (hier draufklicken und das im Browser bookmarken).
Das sind alle Klassen

Guck mal, ob mir beim Entpacken von Eclipse irgendwelche gotchas auffallen.

Axel

Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Marinero Atlántico am 04.02.05 - 17:30:51
ok. Eclipse zieht sich beim starten das erste JRE im PATH des OS.
Man kann das aber auch auf das root des jsdk umswitchen.
In Windows\Preferences Java \ Editor \ Installed JRE
Man kann da auch das root des jsdk als JRE angeben (ist es ja eigentlich auch).
Bei Downloads von Sun ist immer ein JRE automatisch dabei.

Tipp: Du kannst da auch einen Dokumentationslink angeben. Der zeigt auf die Sun webseite. Besser ist sich die Dokumentation runterladen (oben beschrieben) und auf das entsprechende Verzeichnis auf der eigenen Platte zu zeigen (s. screenshot).

Ich hab genau dort auch nun Java5 enabled. Einfach über add.
Eclipse führt dann bestimmte "Conversions" durch. Es funktioniert aber.
Titel: Re: Zugriff auf externe .JAR-Files (POP3, SMTP)
Beitrag von: Manfred Dillmann am 04.02.05 - 17:39:31
Hi Axel,

Du bist ja unermüdlich...  :)

Danke Dir!

Schönes Wochenende
Manfred