Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: mlschach am 10.06.03 - 13:55:35

Titel: von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 10.06.03 - 13:55:35
Hallo,

ich bin ein Neuling in eurem Forum und würde mir gern helfen lassen. Programmiere gern in meiner Freizeit und habe folgendes Problem:
Ich möchte ein Java-Programm schreiben, das auf Lotus-Notes-Datenbanken zugreifen kann. Und zwar liegen in der Notes-Datenbank verschiedene Mail-Dokumente. Ich möchte nun in meinem Java-Programm diese Mail-Dokumente erfassen können und zB den Absender und die Subjektzeile auslesen. Das soll sowohl bei lokalen Notes-Datenbanken möglich sein als auch bei Notes-Datenbanken, die auf einem entsprechenden Server liegen.
Kenn mich mit Java so halbwegs aus und auch mit Notes. Beises zusammen hab ich noch nie ausprobiert.

VIELEN DANK IM VORAUS!!!

Grüße,
Michael
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Axel_Janssen am 10.06.03 - 14:28:28
Hallo Michael,

Notes kann seit Release5 über eine Corba-Implementierung von aussen angesprochen werden. Lokal geht auch. Dann ist es performanter. Wenn du von aussen drauf zugreifst, bist du nicht auf Java1.1.8 beschränkt.
Domino6 hat Java1.31 implementiert.

Am besten du schaust dir einmal den code von Ralf, die Erläuterungen und Diskussionen an:
(ziemlich weit oben im Thread beginnt das, und dann wurde hin und wieder drauf Bezug genommen).
http://www.atnotes.de/index.php?board=11;action=display;threadid=7451;start=0

Ich selbst habe das Thema in meinem Eclipse Thread behandelt.
http://www.atnotes.de/index.php?board=24;action=display;threadid=7967

Ralf bezieht sich auf die Netbeans IDE. Bei beiden ist der source code so dabei, dass du jede IDE oder das jdk benutzen kannst.

Falls du auf irgendwelche Probleme stösst, melde dich.
 ;D

gruss axel
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Ralf_M_Petter am 10.06.03 - 14:58:43
Hallo Michael,

Notes kann seit Release5 über eine Corba-Implementierung von aussen angesprochen werden. Lokal geht auch. Dann ist es performanter. Wenn du von aussen drauf zugreifst, bist du nicht auf Java1.1.8 beschränkt.
Domino6 hat Java1.31 implementiert.



Das ist nicht ganz korrekt. Auch beim lokalen Zugriff ist man nicht auf die 1.1.8 beschränkt. Wenn die Java Programme auf der selben physischen Maschine wie der Domino Server oder auf dem Clientpc mit installierten Notes laufen kann man den lokalen Zugriff mit JDK >1.1.8 verwenden. Dabei können die Programme auch in einer 1.4.1 JVM laufen. Lokaler Zugrif ist sowieso irreführend, da es mit dem sogenannten lokalen Zugriff natürlich auch möglich ist, auf Server Datenbanken zuzugreifen. Meinen Tests zufolge ist der lokale Zugriff um ein vielfaches schneller als der Zugriff über Corba. Falls hier jemand andere Erfahrungen hat, wäre ich sehr daran interessiert. Da man mittels Corba gerade im JSP Umfeld ein paar Sachen eleganter  lösen könnte.

Grüße

Ralf
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Rob Green am 10.06.03 - 16:45:47
wenn ich das also richtig verstanden habe, dann liegt
- unter R5 Java die Version 1.18 zu Grunde, aber NUR wenn ich Java in die DB implementiert habe und aus dem Domino Server bzw. Client das Programm interpretiert wird, heißt es greift die entsprechende JVM Version von Notes
- unter R6 gleiche Story nur eben Java 1.3
- alle Javazugriffe von aussen können durchaus mit der aktuellsten Version vorgenommen werden (also das Auslesen von Notesdaten)
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Ralf_M_Petter am 10.06.03 - 16:50:35
Das hast du volkommen richtig verstanden. Mein Punkt war, dass es egal ist, ob von aussen der Zugriff über Corba oder Lokal Notes erfolgt. Wie du richtig gesagt hast, kommt es nur darauf an, ob der Code in der JVM von Notes sprich er ist in der Datenbank z.B. Java Agent oder Java Applet, oder in einer externen JVM sprich Java Programm, Java Applet in Browser, Servlet oder JSP läuft.

Grüße


Ralf
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Rob Green am 10.06.03 - 17:10:49
ich könnte aber auch ein JAR File als File Ressource in eine DB reinhängen und das JAR File kann dann von der Notes DB angesprochen werden wie ein externes File?

Bzw. überhaupt die Frage: ist die Richtung wichtig? Sprich zum letzteren: ist es ein Unterschied ob ich kann von Notes aus Java Programme aufrufe und Werte zurückbekomme oder von Java Notes aufrufe, heißt also es kann in beiden Fällen ruhig Java 1.4 sein?
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Ralf_M_Petter am 10.06.03 - 17:16:01
Hallo Rob Green!

Das verstehe ich nicht ganz wie du das meinst, ich denke schon, dass du as Notes über die Shell Funktion den Befehl Java und deine Java Klasse extern ausführen kannst, aber nur verstehe ich nicht ganz was das bringt. Vielleicht beschreibst du das ein wenig näher wie du dir das vorstellst?

Grüße

Ralf
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Rob Green am 10.06.03 - 17:50:20
genauso wie ich Word als externer Programm ansteuern kann unter Verwendung von VB Code denke ich mal, daß ich externe Java Programme über "Remotezugriffe" wie Word ebenso steuern kann. Daher die Frage, ob das überhaupt geht und wenn ja, ob dann die Java 1.18 Version von R5 meine Baseline dazu in Notes darstellt.
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Ralf_M_Petter am 11.06.03 - 08:20:15
Hm..

Lass mich überlegen, normalerweise lassen sich Java Programme nicht von aussen so steuern wie du es bei Word machst, da Java Programme keine COM Komponenten sind.

Aber es gibt eine Ausnahme, wenn du deine Java Komponenten nach der Java Beans Spezifikation erstellst, dann kann man die ActiveX zu Java Beans Bridge verwenden. Da sollte dann die Verwendung bis JDK 1.3.1 möglich sein. Unter 1.4.0 und 1.4.1 ist die Bridge scheinbar nicht unterstützt, aber mit JDK 1.4.2 gibt es sie dann wieder. Diese Active X Komponenten können dann in Notes ganz normal verwendet werden.  Für weittere Infos schau mal hier nach http://java.sun.com/products/javabeans/software/bridge

Grüße

Ralf
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Axel_Janssen am 11.06.03 - 09:30:03
Es ist nach wie vor ziemlich verwirrend. Zunächst ein Versuch, das ganze ein bischen zu klassifizieren.

Von aussen heisst meiner Meinung nach immer, dass der "aussen" laufende code nicht in der Notes JVM, sondern in einer anderen läuft, right?

Auch bei Verwendung der "ActiveX zu Java Beans Bridge".

Wichtig ist die Unterscheidung, ob das
- Objekt innerhalb einer anderen JVM durch code aus der Notes-VM aufgerufen wird (v.a. Applet in z.B. einer Notes-Maske).
Dies wäre aus meiner Sicht eine Verwendung der "ActiveX zu Java Beans Bridge".
[outbound]
oder umgekehrt,  
- ob Objekte innerhalb einer Notes-JVM aus einer JVM ausserhalb von Notes aufgerufen werden. Man greift dann etwa von der Konsole des OS oder einer swing Anwendung auf Notes zu.
[inbound]

outbound und inbound ist immer aus der Perspektive von Notes.

Nun hat Ralf das Phänomen festgestellt, dass es bei inbound 2 modi gibt. Lokal Notes und Corba.
Lokal Notes ist offenbar wesentlich performanter.
Bei Corba ist es egal, wo die aufgerufene Datenbank liegt. Bei Lokal Notes muss sie "auf dem Rechner des Anwenders liegen (inkl. vermutlich gemappte Laufwerke)".

Ich habe zwar keine wirklichen Überblick bei Corba - und jetzt auch keine Zeit nachzuschlagen - aber ich vermute, dass Lokal Notes auch über die Corba-Implementierung läuft, nur eben als eine Art lokaler Modus.

Enterprise Java Beans ist in der Hinsicht ähnlich wie Corba, als das dort auch Objekte "Standort-transparent" (ist egal wo das Objekt liegt, ob auf meinen Rechner oder einem anderen) aufgerufen werden.
Der aufrufende Rechner kommuniziert mit einem lokalen Stub und der EJB-Container findet das entsprechende Objekt auf einem Computer im Netzwerk.

Dafür verlasse die übergebenen Parameter den aufrufenden Computer. Damit das überhaupt geht müssen sie in etwas anderes umgewandelt werden (ein Bit-Stream der über die Leitung zum Objekt geht).
Die Umwandlung zwischen Objekt und Bit-Stream wird Serialisierung/Deserialisierung genannt.
Ein extrem bedeutender Fakt von verteilten Rechnen ist, dass dies ressourcenmässig nicht billig ist.  

Hypothese: Bei Lokal-Notes merkt es die CORBA- Implementierung, dass Serialisierung nicht nötig ist, da sich das aufzurufende Objekt auf dem Lokalen Rechner befindet.

Wie gesagt: Dies ist eine reine Idee von mir, warum das so sein könnte.
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Ralf_M_Petter am 11.06.03 - 09:54:26
Hm Offensichtlich habe ich mich unklar ausgedrückt. vergessen wir mal alles was sich aus der Diskussion mit Rob Green herauskristallisiert hat. Also wir beschäftigen uns nur mit dem Zugriff von Java egal wo läuft auf Notes Datenbanken.

Möglichkeit 1 Zugrif mittels CORBA

Auf dem Domino Server muss HTTP und DIIOP gestartet und DIIOP im Server Dokument eingerichtet sein.
Auf dem Recher wo das Java läuft muss weder ein Notes Client noch ein Domino Server installiert sein. Bietet sich vor allem an, wenn auf der Plattform wo das Java läuft eventuell kein Notes/Domino verfügbar ist. Oder z.B. für Applets im Browser die auf Rechnern ausgeführt wird wo kein Notes Client installiert ist.

Der Zugriff ist nur auf Datenbanken möglich, die auf dem Domino Server liegen. Kein Zugriff auf Datenbanken eines etwaigen lokalen Notes Client. Es ist keine Initialisierung des Threads MIt otesThread.sinitThread() notwendig.

Möglichkeit 2 Zugriff über sogenannten lokalen Zugriff.

Auf dem Domino Server muß kein HTTP, DIIOP laufen. Jedoch muss auf der Maschine auf der das Java läuft entweder ein Notes Client oder ein Domino Server installiert sein.

Wenn das Java auf einer Maschine läuft auf der ein Notes Client installiert ist, dann hat man natürlich nicht nur Zugriff auf die Datenbanken die im lokalen Datenverzeichnis gespeichert sind, sondern man kann natürlich auf auf jede Datenbank zugreifen die auf irgendeinem Server gespeichert ist, den der Notes Client erreichen kann. Es gelten alle Einstellungen wie wenn ich den Notes Client benützen würde. In Wirklichkeit ist es nämlich so, dass alle Notes Java Klassen in Wirklichkeit nur Hüllenklassen für das darunterliegende C++ API von Lotus sind.  Beim verwenden des lokalen Zugriffs muß man den Thread mit NotesThread.sinitThread() initialisieren.  (Oder einen Thread nehmen der von der Klasse NotesThread erbt).

Übrigens bei beiden Möglichkeiten müssen Notes Objekte recycelt werden. Ich hoffe, dass ich auf die recycle Problematik demnächst hier eingehen kann.

Ist jetzt alles klar, oder drücke ich mich noch zu unklar aus?

Grüße

Ralf
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Rob Green am 11.06.03 - 10:33:53
*wenn die Großen sich unterhalten, schweigen die Krümel*  ;D

Jungs (ist Weibsvolk anwesend...neiiiinn...naaaiiiinnn), Ihr seid spitze  :D :D
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Axel_Janssen am 11.06.03 - 11:34:48
Zitat
drücke ich mich noch zu unklar aus?

ich hoffe nicht.  ;D

hmmm. Kann sein, dass ich manchmal immer noch dazu Neige ob der Begeisterung der eigenen Rede Tomaten auf den Ohren habe. Ich glaube das ist menschlich aber uneffizient.   ;D

Gut. Hoffe ich habs jetzt:

Bei "sogenannten lokalen Zugriff" wird kein COrBA verwendet.

Die Notes-jars dienen lediglich als Wrapper-Schicht für die Notes-Client-dll's von Windows (rede jetzt über Windows-Client).
Irgendwo in dem code der Notes-jars werden diese C-Funktionen über JNI aufgerufe (nenne das jetzt JNI-Implementierung)

Damit dürfte alles an Datenbanken im Zugriff sein, was über dem Notes-Client von diesem Rechner auch im Zugriff ist. Der Notes-Client benutzt ja die gleichen C-Funktionen.
Wird eine NSF auf dem Server angesprochen läuft das über die Remote Procedure Calls, wie gewöhnt.  

CORBA wird nur benötigt, wenn man die Wrapper für die C-Klassen aus irgendwelchen Gründen nicht an die dll mit den Windows-Funktionen kommen. Zum Beispiel weil gar kein Notes (Client oder Server) installiert ist. Oder weil keine korrekten Win-Registry-Einträge für Notes existieren (dieser Rechner).

Wichtige Frage ist nun, wie es aussieht mit Zugriffen auf Notes aus der VM im Servlet-Container* Tomcat oder der im Web- bzw. EJB-Container in Websphere. Wenn auf den entsprechenden Boxen ein Notes-Client installiert ist, benutzen die dann auch die effizientere JNI-Implementierung?

Ich werde das in den nächten Tagen mal überprüfen.

Gruss Axel

* eigentlich ist auch hier Web-Container der korrekte Ausdruck. Ich finde nur den älteren Ausdruck Servlet-Container sprechender.
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Ralf_M_Petter am 11.06.03 - 11:43:58

Wichtige Frage ist nun, wie es aussieht mit Zugriffen auf Notes aus der VM im Servlet-Container* Tomcat oder der im Web- bzw. EJB-Container in Websphere. Wenn auf den entsprechenden Boxen ein Notes-Client installiert ist, benutzen die dann auch die effizientere JNI-Implementierung?

Ich werde das in den nächten Tagen mal überprüfen.

Gruss Axel

* eigentlich ist auch hier Web-Container der korrekte Ausdruck. Ich finde nur den älteren Ausdruck Servlet-Container sprechender.

Ja bingo genauso ist es. Das mit dem Tomcat habe ich genau in dieser Form bei unseren Webseiten realisiert. Nur das bei mir der Tomcat auf der selben Maschine läuft wie der Domino Server und deshalb von Notes.jar gleich die Notes.dll des Servers verwendet werden. Browseranforderungen werden von Apache/Tomcat serviciert, der aber sämtliche Informationen aus einer Notesdatenbank die über den Notesclient gepflegt wird zieht. Die Informationen werden von den einzelnen Fachabteilungen bei uns im Haus eingepflegt. Nur mehr die JSP's wurden von mir erstellt.  Ich habe dabei Designtemplates von einem externen Designer übernommen. Die Webseite läuft nun seit 4 Monaten absolut stabil bei tausenden Zugriffen pro Tag.

Grüße

Ralf
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 11.06.03 - 12:25:56
ok. ich danke euch und schau mir das jetzt erstmal genauer an. beim ersten drüber fliegen, habe ich jedoch schon festgestellt, dass vieles für mich chinesisch ist. vielleicht könnt ihr mir doch nochmal manche Stelle etwas genauer erklären (bin eher noch Anfänger beim Programmieren)

zB:
- wie erfolgt genau der verbindungsaufbau?
- wie genau erkenne ich dokumente, die in der datenbank liegen?
- wie greife ich dann auf bestimmte felder bestimmter dokumente zu (subjekt-zeile, absender, eigentlicher mail-text)?
- und so weiter

ich weiß, diese fragen kommen euch wahrscheinlich lächerlich vor. aber wäre trotzdem nett, wenn ihr mir schritt für schritt detailiert erklären könntet, wie ich vorgehen muss. das ganze mit möglichst einfachen sample-codes wäre optimal.

gruß,
Michael

ps: scheint ein echt gutes forum zu sein *freu*
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Ralf_M_Petter am 11.06.03 - 13:08:20
Lies mal folgenden Thread durch in dem befinden sich auch ein kleines Javaprogramm, das auf Notes zugreift.

Falls dann noch Fragen bleiben, bitte frag!

http://www.atnotes.de/index.php?board=11;action=display;threadid=7451
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 13.06.03 - 09:02:55
hi again.

das programm hab ich mir schon angeschaut. klärt aber nicht die frage, wie ich rausfinde, welche dokumente in meiner DB liegen und wie ich auf die zugreife.
oder hab ich was übersehen????
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Ralf_M_Petter am 13.06.03 - 09:06:23
Eine kleine Gegenfrage, Kannst du Lotus script? Die Notes Klassenbibliothek  in Java ist fast ident mit der in Lotus script. Also du machst den Zugriff über views auf die Dokumente wie gewohnt. Falls du Lotus script nicht kannst, den verstehe ich deine Frage und ich werde schauen, dass ich ein Beispiel posten kann. Vielleicht kannst du auch noch etwas genauer beschreiben, was du machen willst.

Grüße

Ralf
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 29.06.03 - 13:57:54
hallo,

also erstmal sorry, dass ich erst jetzt antworte, aber ich war in Flitterwochen  ;D
Also, mit Lotus Skript kenne ich mich so gut wie gar nicht aus. Wäre also toll, wenn du mir ein beispiel basteln könntest.
ganz konkrt will ich folgendes erreichen:
ich möchte ein java-tool basteln, mit dem ich auswerten kann, wieviele mails in einer bestimmten notes-datenbank von einer bestimmten person drin sind. ferner will ich eine auswertung über den inhalt dieser mails anhand der jeweiligen betreffzeile. bei der datenbank handelt es sich um eine auf einem server liegende DB, die einen e-learning kurs darstellt. während eines solchen kurses schicken die teilnehmer verschiedene mails, die in dieser DB gesammelt werden. und ich will nun genau darüber eine auswertung haben. komme ich erstmal an die daten (die ich innerhalb von java dann in arrays speichern will), werde ich grafische auswertungen dazu programmieren. aber erstmal muss ich an die daten, d.h. wer schickt wann welche mail. genau da liegt mein problem.  ???
meinen fragen zufolge, kannst du ja schon entnehmen, dass ich kein profi o.ä. bin. umso einfacher und simpler das beispiel, desto besser.  :-\
VIELEN DANK SCHON MAL IM VORAUS!!!!  :)

ps: bin erst am donnerstag wieder online, also bitte nich wundern, wenn ich mich nicht gleich wieder melde.
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Axel_Janssen am 29.06.03 - 16:50:49
(die ich innerhalb von java dann in arrays speichern will),

Ich empfehle HashMap oder Hashtable. Die Mailadresse des Users als Key (String) und die entsprechenden dazugehörigen Daten als value (selbst geschriebene Klasse im Sinne von Value Object Design Pattern).

werde ich grafische auswertungen dazu programmieren
ich empfehle: http://www.jfree.org/index.html

VIELEN DANK SCHON MAL IM VORAUS!!!!  :)

nichts zu danken. ;D

übrigens,
Ziel solcher Forums ist der fachliche Austauch von Personen, die sich mit den thematisierten Technologien auseinandersetzen. Sie sind nicht dafür da, dass Leute, die auf Grund von leider nicht sonderlich professionell fomulierten Requirements massgeschneiderten code einfordern, ohne dies pekuniär abzugelten.

Falls du in deiner Freizeit gerne programmierst, wie oben von dir angegeben, kann dir dann weitergeholfen werden, wenn du den hier bereits von mir und Ralf referenzierten code nimmst, und ihn versuchst auf deine Zwecke anzupassen.
Ansonsten empfehle ich dringend, eine professionelle Consulting um Unterstützung zu bitten.

link: de.comp.lang.java verfährt genauso. (http://groups.google.de/groups?dq=&hl=de&lr=&ie=UTF-8&threadm=ki50gvsin3ill5bm62nbgt1ujd7moqne6t%404ax.com&prev=/groups%3Fdq%3D%26num%3D25%26hl%3Dde%26lr%3D%26ie%3DUTF-8%26group%3Dde.comp.lang.java%26start%3D25)

Gruss Axel
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Ralf_M_Petter am 29.06.03 - 18:45:39
Muss mich Axel anschliessen, denn wen du noch gar keine Erfahrungen in Lotus script hast, ist sicher der Besuch eines Kurses zu diesem Thema oder ein externes Consulting sinnvoller. Sonst kann dir Axel eventuell auch ein gutes Buch empfehlen.

Grüße

Ralf
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 04.07.03 - 14:25:39
Hallo,

habt ja recht, will ja auch gar keine Lösung von Euch, sondern Ansatzpunkte. Hab aber inzwischen selbst ein wenig ausprobiert. Bin dabei schnell auf nen Fehler gestoßen, der mir die Nerven raubt. Vielleicht wisst ihr rat:

Benutzte Netbeans und Java in der jeweils aktuellsten Version. Habe in Netbeans die Notes.jar wie in dem von euch empfohlenen Thread eingetragen. Dann wollte ich folgendes Progi starten:


/*
* test.java
*
*/
import lotus.domino.*; //Anweisung um den Java Compiler mitzuteilen, wo er die Notesklassen findet.
/**
*
*/
public class test {
   
    /** Creates a new instance of testprogramm In unserem Beispiel brauchen wir keine Instance */
    public test() {
    }
    /**
    * @param args the command line arguments
    */
    public static void main(String[] args) {
        NotesThread.sinitThread(); //Beim lokalen Zugriff nicht DIIOP muss der Thread erst für Domino initialisiert werden.
        Session ses=null; //Sessionvariable definieren.
        try { //Da Notes Klassen Exceptions werfen können sollte man diese auch abfangen.
            ses = NotesFactory.createSession(); //Erzeugen eines Sessionobjekts
            Database db=ses.getDatabase("","TUTOR2.NSF"); // Öffnen einer Datenbank bitte das anpassen an euer Umfeld z. B. Maildatenbank.
            System.out.println("Datenbank hat folgenden Dateiname: "+db.getFileName());
            //Anzahl Dokumente und Betreffzeilen
            //Hier immer Fehler beim Start!!:
DocumentCollection dc = db.getAllDocuments();
            //System.out.println("Database \"" +
            //db.getFileName() + "\" has " + dc.getCount() + " documents");
            //int n = 0;
           // Document doc = dc.getFirstDocument();
            /*while (doc != null) {
                n++;
                System.out.println
                ("Document # " + n + ": " +
                doc.getItemValueString("Subject"));
                doc = dc.getNextDocument();
            }*/
 

        }
       
        catch (Exception e){
            System.out.println("Es ist ein Fehler aufgetreten");
            e.printStackTrace();
        }
 
   
}
}



Dabei bereitet mir folgende simple Zeile Kopfschmerzen:

DocumentCollection dc = db.getAllDocuments();
           
Da kann man ja nich viel falsch machen. Kompilieren kann ich mein Programm problemlos. Beim Start tritt jedoch folgender Fehler auf:

Datenbank hat folgenden Dateiname: TUTOR2.NSF
Es ist ein Fehler aufgetreten
lotus.domino.NotesException
        at lotus.domino.local.NotesBase.PropGetAdt(Native Method)
        at lotus.domino.local.Database.getAllDocuments(Database.java:1152)
        at test.main(test.java:27)

Kann mir jemand mal bitte sagen, woran das liegt?? Fehlt da irgendwo im System oder in Netbeans noch ne Einstellung? Denn Fehler in meinem Code ist das doch wohl nicht, oder?!

Hab echt keine Idee mehr. Meine Datenbank TUTOR2.NSF liegt übrigens erstmal einfach lokal im gleichen Verzeichnis wie mein Java-Progi.

Michael
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 04.07.03 - 19:17:00
ok, vergeßt die frage. ich sollte erst denken, dann posten.  >:(

die DB gehört ins Notes/Data bzw mit relativen pfad von dort aus angegeben, ne?!

inzwischen hab ich ein progi, dass mir alle dokumente der DB ausliest und die subject-zeile ausgibt.

eine frage: wie kann ich herauskriegen, ob ein dokument in einem bestimmten folder liegt bzw. in welchem folder ein dokument liegt?? ich hab nur nen befehl gefunden, um ein dokument in einen bestimmten folder zu schieben, aber nix ala "getDocumentLiegtInFolder()". Kleiner Tip??  ???

Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Axel_Janssen am 04.07.03 - 19:47:45
normalerweise geht man den umgekehrten Weg.

Du fragst einen Folder nach einem Dokument.
Ein Folder ist vom programmatischen Zugriff eine View.

Also:
Code
View folder = db.getView("Folder1");
DocumentCollection dc = folder.getAllDocumentsByKey(key);
// wobei key ein Schlüssel auf die erste sortierte Spalte des Folders ist.

hoffe es hilft

gruss Axel
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 05.07.03 - 08:57:25
danke. das ist schon mal ein ansatz. vielleicht gehts auch so.

allerdings wär das was ich brauche jedoch tatsächlich andersrum. ich hab ziemlich komplexe ordnerstrukturen in meiner DB und will nun einfach rauskriegen, ob dokument xy  nun in einem ganz bestimmten ordner abc liegt. geht das vielleicht auch? kann man vielleicht den ordner-pfad irgendwie abfragen?

ganz konkret:
dokument xy liegt im ordner ab, der wiederum im ordner cd liegt und so weiter.  will nun wissen, ob xy wirklich im ordner ab liegt OHNE dabei über den von dir vorgeschlagenen ansatz alle möglichen ordner(views) abzufragen. geht das????
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Ralf_M_Petter am 05.07.03 - 10:51:01
Das sollte auch gehen, wichtig ist, dass die Datenbank für FolderReference enabled ist.

Dann kann mit dem doc.getFolderReference() ein Vector mit den  UNIDs der Folder abgefragt werden.

Hier ein Auszug aus der Hilfe des Domino Designers dazu:

FolderReferences property  

Read-only. The universal IDs for the folders containing a document.
Defined in
Document
Data type
java.util.Vector; elements are String
Syntax
public java.util.Vector getFolderReferences()
    throws NotesException
Usage
Hinweis  The database must have the $FolderRef and $FolderRefInfo hidden views to support folder references. These views can be copied from the Release 5 mail template. Also, this property does not return view references.
Folder references must be enabled for the database. See the FolderReferencesEnabled property of Database.
Siehe auch
Accessing document properties

Hoffe das hilft, sonst kannst du bei Problemen natürlich fragen.

Grüße

Ralf
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 06.07.03 - 17:44:35
danke. das hilft erstmal. hat mich jedoch gleich zu einem weiteren problem geführt.
zunächst hatte ich mein programm mit hilfe der lotus.notes-Klassen geschrieben. Um getFolderReference() zu nutzen, braucht ich jedoch die lotus.domino-Klassen.

 ??? Meine erste Frage: Wo besteht der Unterschied zwischen den Klassen? Welches ist die bessere Wahl?

Zweite Frage: Nach dem Umschreiben meines Programmes bekomme ich plötzlich ein Problem mit der Zeile:

Document doc = dc.getFirstDocument

 ??? Woran liegt das und wie behebe ich dieses Problem???

Hier mal mein ganzes kleines Programm nebst Fehlerausgabe (kann zwar problemlos kompilieren, aber nicht ausführen):

Code
/* Analyzer.java */

import java.util.*;
import lotus.domino.*;

public class Analyzer extends NotesThread
{
    protected Session sess;
    protected Database db;
    protected DocumentCollection dc;
    
     
    public static void main(String[] args)
    {
        Analyzer a = new Analyzer();
        a.start();
    }
   
    
    // open db 
    public boolean init()
    {
        try
        {
             sess = NotesFactory.createSession();
             db = sess.getDatabase("", "TUTOR2.NSF");
               
            if(!db.isOpen())
            {
                System.out.println("...Fehler beim Öffnen...");
                return false;
            }  
            else
            {
                //System.out.println("...DB geöffnet...");
                if (!db.getFolderReferencesEnabled()) 
                {
                    db.setFolderReferencesEnabled(true);
                    System.out.println("...FolderReference Enabled...");
                }
                else 
                {
                    System.out.println("...FolderReference true...");                                                                                
                }
   
            }
         
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return false;
        }
        return true;
    }
        
    // print db name 
    public void dbInfo()
    {
        try 
        {
            System.out.println("..." + db.getFileName() + " geöffnet ...");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
        
    // fill DocumentCollection 
    public void readNotesDB()
    {
        try 
        {
            dc = db.getAllDocuments();
            System.out.println("Database \"" +
            db.getFileName() + "\" has " + dc.getCount() + " documents");
            int n = 0;
            // warum hier fehler???
            Document doc = dc.getFirstDocument();
            
           /* while (doc != null) {
                n++;
                System.out.println
                ("Document # " + n + ": " +
                doc.getItemValueString("Subject"));
                doc = dc.getNextDocument(doc);
            }*/ 
                                    
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
        
    // run thread
    public void runNotes()
    {
        if(init())
        {
            dbInfo();            
            readNotesDB();
        }
                       
     }
}
         


Das Programm produziert folgende Ausgabe:

Code
...FolderReference true...
...TUTOR2.NSF geöffnet ...
Database "TUTOR2.NSF" has 518 documents
java.lang.UnsatisfiedLinkError: NIncRefCount
        at lotus.domino.local.NotesBase.NIncRefCount(Native Method)
        at lotus.domino.local.Document.<init>(Document.java:86)
        at lotus.domino.local.Database.FindOrCreateDocument(Database.java:238)
        at lotus.domino.local.DocumentCollection.getFirstDocument(DocumentCollection.java:117)
        at Analyzer.readNotesDB(Analyzer.java:82)
        at Analyzer.runNotes(Analyzer.java:105)
        at lotus.domino.NotesThread.run(NotesThread.java:203)

Was genau bedeutet dieser Fehler? Was mache ich falsch?

 ??? ??? ???

ubb tags eingefügt von Axel
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Axel_Janssen am 06.07.03 - 21:37:19
Code
Die Forums-software kennt verschiedene sogenannte UBB-tags. UBB-tags sind ein Pseudo-Standard benannt nach dem Produkt UBB, der dies als erstes benutzte. 
&#91
Dein code ist leichter zu lesen, wenn du unmittelbar vor diesem <code> und nach diesem </code> schreibst. Genau wie html tags. 
WICHTIG: Statt kleiner-gleich // grösser-gleich mit diesen Klammern [].
Ich habe das in deinem Posting zur besseren Lesbarkeit editiert. 
Da können wir ja beide schreibend drauf zugreifen :-)  


Gracias, Danke, Thank you, Muito obrigado,
für dieses interessante Problem (explizit nicht zynisch gemeint).

Dein code ist soweit technisch ok.
Es könnte an deiner Installation liegen.


Ich habe im Disku-Forum von notes.net ähnliches gefunden.
Hast du evt. neben dem 5er-Client auch einen 6er Notes installiert? Oder arbeitest du ganz mit 6.
Es hängt damit zusammen (meine Meinung) dass im Java-Code in  notes.jar über Java Native Interface auf OS-Libraries (in C) zugegriffen wird. Offenbar findet er nicht die Richtigen.
Ich hatte (und habe) verwandte Problem auf einem Rechner, wo der Notes-Client auf Grund eines Absturzes in keiner Win-Registry und sonstigen PATH-Variable mehr auftaucht.


Hier der komplette thread aus notes.net r5 forum:
Zitat
java.lang.UnsatisfiedLinkError: NIncRefCount
Posted by b hausch on 5.Feb.03 at 09:36 AM using a Web browser
Category: Lotus Tools -- Java/CORBA ToolkitRelease: 5.0.10Platform: Windows 2000

when trying to get the first Document out of a DocumentCollection in a standalone app using:

DocumentCollection dc = m_db.getAllDocuments();
Document doc = dc.getFirstDocument();

i get folowing error:

java.lang.UnsatisfiedLinkError: NIncRefCount
at lotus.domino.local.Document.<init>(Document.java:86)
at lotus.domino.local.Database.FindOrCreateDocument(Compiled Code)
at lotus.domino.local.DocumentCollection.getFirstDocument(DocumentCollec
tion.java:117)
at Connect.SelectPerson(Connect.java:76)
at Connect.runNotes(Connect.java:36)
at lotus.domino.NotesThread.run(NotesThread.java:203)
at lotus.domino.NotesThread.run(NotesThread.java:201)

hope someone can help

regards
b.

ANTWORT:
Posted by Valery Kobzar on 18.Mar.03 at 02:11 AM using a Web browser
Category: Lotus Tools -- Java/CORBA ToolkitRelease: 5.0.10Platform: Windows 2000

this error when verion of client 6.x.x
reinstall Lotus Notes v.5.x.x and it fix this problem :)

sorry for my english :)

ANTWORT
RE: java.lang.UnsatisfiedLinkError: NIncRefCount
Posted by b hausch on 19.Mar.03 at 10:39 AM using a Web browser
Category: Lotus Tools -- Java/CORBA ToolkitRelease: 5.0.10Platform: Windows 2000

didn´t know why, but problem seams to be solved

Hier sind noch ein paar ähnliche Problemmeldungen (ohne Lösungen):
Link weitere Problemmeldungen (http://www-10.lotus.com/ldd/46dom.nsf/Search?SearchView&Query=%22java.lang.UnsatisfiedLinkError%3A%20NIncRefCount%22&SearchOrder=0&Start=1&Count=100)


Versuche vielleicht mal in die PATH-Variable des OS an die erste Stelle auf das Programm-Verzeichnis des Notes-Clients zu verweisen.
Also: Win-Startknopf//Systemsteuerung//System//Erweitert //Umgebungsvariablen-Button // System Variablen und da PATH. An erste Stelle sowas wie C:\Lotus\Notes; (hängt davon ab, wo dein Systemverzeichnis liegt).
Hmm. Wenn man mit Netbeans arbeitet, muss man vielleicht auch  das Notes-Programmverzeichnis explizit mounten. Kennt sich Ralf besser aus.
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 07.07.03 - 09:00:23
habe tatsächlich notes 6. hatte ich damals einfach über notes 5 rübergebügelt. habe jetzt einfach nochmal komplett deinstalliert und wieder installiert. und siehe da, das programm funktioniert. vielen dank. ich meld mich dann wieder bei problemen  ;D ;D
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Axel_Janssen am 07.07.03 - 10:15:06
Sowas kann einen aber wirklich in den Wahnsinn treiben. Das kenne ich. Interessant ist v.a. dass es in keinem der Foren auf notes.net die korrekte Erklärung da ist, warum das auftritt. Meine Erklärung ist ja mehr eine Hypothese.
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 07.07.03 - 11:48:08
tja ja, liebe solche fehlermeldungen auch. ewig rumgesuche, dann gibts meist ne ganz einfache, unlogische lösung  >:(

auch wenns nich in diesen teil des forums gehört, darf ich trotzdem mal ne blöde frage betreffs java stellen? will meine aus notes ausgelesenen daten speichern mithilfe der FileOutputStream Klasse. Klappt auch alles, aber wie stell ichs an, das er mir meine erzeugte datei nicht auf den desktop speichert (was er bei mir dummerweise immer tut), sondern direkt in das verzeichnis, in dem mein java-programm liegt (möchte aber kein statischen pfad ala c:\folder1\usw nutzen, da der ordner mit dem programm ja auf unterschiedlichen rechnern in verschiedenen ordnern liegen kann)???

hier meine speichermethode:

 public void savePrefData() {
   System.out.println("\nDaten speichern...");      
   try
        {
            FileOutputStream fs = new FileOutputStream("preferences.ser");
            ObjectOutputStream os = new ObjectOutputStream(fs);

            os.writeObject("Test");      
                  
            os.close();
            System.out.println("...Speichern war erfolgreich.");      
        }
        catch (IOException e)
        {
            System.err.println(e.toString());
        }   
    }
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Axel_Janssen am 07.07.03 - 11:58:09
Aus Java sicher nicht.
Weiss momentan auch nicht, wie man in notes das gegenwärtige Programmverzeichnis des Notes-Clients herausbekommt. Poste einfach in R5 Entwicklung.

Du kannst dann beim Starten des Clients diesen String als Feld in ein Dokument abspeichern. Im Forum R5-Entwicklung findest du für diese Problemstellung mehr Leute, die sich damit aus kennen.
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Axel_Janssen am 07.07.03 - 12:12:41
Klappt auch alles, aber wie stell ichs an, das er mir meine erzeugte datei nicht auf den desktop speichert (was er bei mir dummerweise immer tut), sondern direkt in das verzeichnis, in dem mein java-programm liegt (möchte aber kein statischen pfad ala c:\folder1\usw nutzen, da der ordner mit dem programm ja auf unterschiedlichen rechnern in verschiedenen ordnern liegen kann)???


Lass es besser so, wie es ist!!! Der Pfad wie er jetzt ist, ist relativ (zum jeweils installierten Java-Programm). Auf jedem Rechner wird dann das File in dem Verzeichnis abgespeichert, wo das Java-Programm auf diesem Rechner jeweils abgespeichert ist.
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 07.07.03 - 12:33:00
ok. danke.

dann nochmal zurück zu den FolderReferences. Also enabled ist das ganze. funktionieren tuts mit folgendem code nicht:
(...)
 dc = db.getAllDocuments();
            System.out.println("Database \"" +
            db.getFileName() + "\" has " + dc.getCount() + " documents");
            int n = 0;
            Document doc = dc.getFirstDocument();
            Vector docV = doc.getFolderReferences();
                               
            while (doc != null) {
                n++;
                System.out.println
                ("Document # " + n + ": " +
                doc.getItemValueString("Subject"));
                doc = dc.getNextDocument(doc);
               
                //wie ordner rauskriegen???
               
                System.out.println(docV.size());                            
            }                                    

(...)
da mein Vektor docV immer die Größe 0 ausspuckt, haut da also was nicht hin.
schau ich mir meine DB im designer an, dann entdecke ich folgende Views: $FolderRefInfo und $FolderInfo. Die benötigte View $FolderRef ist leider nicht dabei. Ich arbeite wie gesagt mit Notes 6. Kannst du mir konkret sagen, wie ich diese View $FolderRef da rein kriege??? Habe mir schon ein Wolf gesucht.  ???
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Axel_Janssen am 07.07.03 - 12:59:53
es gibt Hinweise. Erste Anlaufstelle wäre für mich das 6er Forum von notes.net.

Hier ist ein Hinweis:
Hinweis auf Problem (http://www-10.lotus.com/ldd/nd6forum.nsf/55c38d716d632d9b8525689b005ba1c0/ea12e959382ff4ed85256c53004a7ca0?OpenDocument&Highlight=0,%24FolderRef)
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 07.07.03 - 14:25:33
hm, das hilft mir leider nicht sehr viel weiter. inzwischen meine ich, herausgefunden zu haben, das bei notes6 die views: $FolderRefInfo und $FolderInfo für die FolderReference verantwortlich sind. Das sagt jedenfalls meine Notes6-Hilfe. Wenn dem so ist, frag ich mich, warum ich immer nur leere Vektoren zurückbekomme, wenn ich mit getFolderReference abfrage?!
Das Forum von notes.net hilft da leider auch nich weiter  :-[
Muss ich halt weiter suchen Wenn du / ihr noch ideen habt, warum das bei mir nicht funkt, dann nur heraus damit. bin für jeden ansatz dankbar.
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Axel_Janssen am 07.07.03 - 15:41:22
nachdem ich die antwort auf notes.net gelesen hätte, würde ich anfangen eine andere Strategie zu wählen, um an die Dokumente zu kommen.
Aber das bin ich und das muss nicht richtig sein.
Offenbar belastet das sehr stark Ressourcen und Leute melden bugs auf notes.net. Gefährliche Kombination.

How about this:
Du gehst über
Database.getViews () --> Array von Views.
Itterierst durch diesen Array.
Fragst jede View, ob sie ein Folder ist (für LoScri und Java Zugriff sind Folders und Views von der gleichen Klasse).
Dann sammelst du die Dokumente aus jedem Foldern auf.

Gruss Axel
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 08.07.03 - 09:02:39
ok. hast wahrscheinlich recht. werde also mal umdanken und sehen, was da im coder herausspringt  :)
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 09.07.03 - 18:57:57
ok. der grobe rahmen meiner anwendung steht. nun habe ich 2 java-spezifische fragen

1) du hattest mir glaube ich JFreeChart empfohlen. Kannst du mir erklären, wie ich mit Hilfe einfacher Daten (zB 10 Wertepaare) ein einfaches Balkendiagramm basteln kann?? Ich werd daraus irgendwie nicht schlau. (die anleitung zu rund 40 Euro oder was das war ist mir eindeutig zu teuer)

2) um mein fenster ein wenig schöner zu machen, möchte ich im hintergrund bilder einbinden. meine applikation ist so aufgebaut, dass ich verschiedene JPanels mit unterschiedlichen Komponenten einblende. Ich möchte für jedes JPanel ein anderes Hintergrundbild. Die Komponenten darüber (Buttons, tables usw) sollen ganz normal aussehen. Krieg das irgendwie auch nicht hin. Muss ich paint() benutzen oder einfach irgendwas mit Graphics g = .... Irgendwie hab ich von Grafik noch keine Peilung. Kann mir jemand helfen??

ansonsten komme ich mit meinem programm gut voran. Daten lese ich bereits aus notes aus, analysiere sie und bereite sie zur auswertung vor. getFolderReference hab ich noch ne Weile probiert, dann aber verworfen.

Vielen Dank im Voraus

Gruß, Micha

ps: ich weiß, das ist eigentlich ein notes-forum, aber vielleicht hilfst du mir trotzdem?? falls nicht, kennst du ein gutes Java-Forum?? ich hab leider noch kein gescheites gefunden.
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Axel_Janssen am 09.07.03 - 19:48:33
(die anleitung zu rund 40 Euro oder was das war ist mir eindeutig zu teuer)
Ist 40 Euro teuer für eine Software (inkl. Doku), die graphische Reports generiert?
O.k. das ist ganz umsonst: http://jcharts.sourceforge.net/

2) um mein fenster ein wenig schöner zu machen...
weiss ich auf die Schnelle auch nicht. Versuchs mal auf de.comp.lang.java, die kennen sich gut mit swing aus (formuliere vorsichtig. gutgemeinter Rat)

ps: ich weiß, das ist eigentlich ein notes-forum, aber vielleicht hilfst du mir trotzdem?? falls nicht, kennst du ein gutes Java-Forum?? ich hab leider noch kein gescheites gefunden.
de.comp.lang.java
http://www.javaranch.com
http://www.sun.net
http://www.jguru.com
das auf den developerseiten von IBM ist auch nicht schlecht.
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 10.07.03 - 17:31:18
vielen dank. das sind echt nützliche sites. mein prog sieht jetzt ganz gut aus. auch die grafiken klappen sehr gut (danke für den tip).
jetzt wollt ich mal mein prog mit na datenbank auf nem server testen, in dem ich einfach statt folgender zeile:

Database db=ses.getDatabase("","TUTOR2.NSF");

diese verwende:

Database db=ses.getDatabase("ABCERVER/15/S","mail1/TUTOR2.NSF");

jetzt geschieht folgendes: es popt ein fenster mit einer passwortabfrage auf - und zwar soll ich mein notes-passwort für mein id-file eingeben. ok, gesagt, getan. danach erhalte ich aber jedes mal ein fehler, mit dem hinweis, dass die DB nicht geöffnet werden konnte.
Woran kann das liegen. Glaube nicht, dass der fehler im code liegt. muss die DB erst irgendwie konfiguriert werden oder so?? oder doch ein fehler im code?? (im wesentlichen noch immer der, den ich gepostet habe)

 ??? ???

und dann habe ich noch eine technische frage zu netbeans bzw java im allgemeinen. bisher habe ich immer auf einem rechner gearbeitet. mein programm läuft da gut und verwendet sowohl Klassen aus notes.jar, als auch aus jCharts-0.7.4.jar. jetzt wollte ich einfach mal mein programm auf einem anderen rechner laufen lassen. java ist dort in der entsprechenden version installiert. nur das ganze läuft nicht bzw läßt sich auf dem 2. rechner auch nicht kompilieren, weil meine klassen aus notes.jar usw nicht bekannt sind. Sprich da fehlt der zugriff auf die jar-files, was ja auch logisch ist. Meine Frage lautet nun: Wie muss ichs auf meinem ersten rechner, auf dem ich entwickle, anstellen, damit mein programm auch auf anderen rechnern läuft, auf denen java installiert ist. muss ich irgendwie die jar-files vorab mit compilieren oder ähnliches? und wenn ja, wie geht das??? kann mir das bitte mal jemand erklären??

noch ne frage: gibts eigentlich ne möglichkeit, meine ganzen programmierten klassen so zu verpacken bzw zu konvertieren, dass ich ein ausführbares programm erhalten (so von wegen start.exe ausführen und schon läufts..)??

auch dieses mal wieder vorab herzlichen dank für jede hilfe und die viele geduld!!!
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Ralf_M_Petter am 11.07.03 - 08:47:49
Hi!

zu deiner zweiten Frage, du musst mit deiner Anwendung natürlich alle verwendeten Klassenbibliotheken mit ausliefern, also Notes.jar und das Grafikpaket. Diese Dateien müssen dann auch im Classpath angegeben werden. java -cp c:\notes.jar;c:\jfreechart.jar

Falls du den lokalen Zugriff auf Notes verwendest muss auf dem Zielpc auch ein Notes Client installiert sein..

Bezüglich deines Problems beim Zugriff auf den Server kann ich nichts sagen, denn bei mir funktioniert das einwandfrei. Kann es sein, dass du einen Tippfehler beim Servernamen hast?

Grüße

Ralf
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Axel_Janssen am 11.07.03 - 12:41:04
auch die grafiken klappen sehr gut (danke für den tip).
Die vielen und oft sehr stabilen OpenSource Komponenten sind in der Tat eine von Anfängern oft unterschätzte Sache.

Die ständige Suche von guten OpenSource-Komponenten ist für mich ein wichtiges Motiv für das ständige scannen von Foren/newsgroups. Das Testen dieser Komponenten nimmt einen nicht unwesentlichen Teil meiner Arbeit ein.

jetzt wollt ich mal mein prog mit na datenbank auf nem server testen, in dem ich einfach statt folgender zeile:

Database db=ses.getDatabase("","TUTOR2.NSF");

diese verwende:

Database db=ses.getDatabase("ABCERVER/15/S","mail1/TUTOR2.NSF");

jetzt geschieht folgendes: es popt ein fenster mit einer passwortabfrage auf - und zwar soll ich mein notes-passwort für mein id-file eingeben. ok, gesagt, getan. danach erhalte ich aber jedes mal ein fehler, mit dem hinweis, dass die DB nicht geöffnet werden konnte.
Poste bitte den gesamten Stacktrace der Fehlermeldung. Ich vermute dein Pfad (entweder vom Server oder vom Client) ist nicht korrekt. Versuche \\ (2 backslashes) statt /


und dann habe ich noch eine technische frage zu netbeans bzw java im allgemeinen. bisher habe ich immer auf einem rechner gearbeitet. mein programm läuft da gut und verwendet sowohl Klassen aus notes.jar, als auch aus jCharts-0.7.4.jar. jetzt wollte ich einfach mal mein programm auf einem anderen rechner laufen lassen. java ist dort in der entsprechenden version installiert. nur das ganze läuft nicht bzw läßt sich auf dem 2. rechner auch nicht kompilieren, weil meine klassen aus notes.jar usw nicht bekannt sind. Sprich da fehlt der zugriff auf die jar-files, was ja auch logisch ist. Meine Frage lautet nun: Wie muss ichs auf meinem ersten rechner, auf dem ich entwickle, anstellen, damit mein programm auch auf anderen rechnern läuft, auf denen java installiert ist. muss ich irgendwie die jar-files vorab mit compilieren oder ähnliches? und wenn ja, wie geht das??? kann mir das bitte mal jemand erklären??
Wir sollten mal herausarbeiten, wie das genau ist. Es ist jedenfalls anders als header-files in c.

noch ne frage: gibts eigentlich ne möglichkeit, meine ganzen programmierten klassen so zu verpacken bzw zu konvertieren, dass ich ein ausführbares programm erhalten (so von wegen start.exe ausführen und schon läufts..)??
Ja, das geht. Es gibt verschiedene Wege.
Am low-leveligsten ist es, dieses Programm mit einem .bat zu starten. Executable jars gehen aber seit Java2 nicht. Bin momentan busy mit Anrufen. Werde am Wochenende hierzu was längeres posten (Wenn ich nicht in einem Projekt meine Wochenendmeilensteine total verfehle).  

FRAGE: Du hast offenbar wenig Java und wenig LoNo-Erfahrung. Hast du Erfahrung mit irgendeiner anderen Programmiersprache?
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: mlschach am 12.07.03 - 08:44:12
hallo vielen dank für die viele geduld, die ihr mit mir habt. bin schon auf dein eventuelles wochenend-posting gespannt. programmieren tu ich so in jeder sprache ein wenig. die meiste erfahrung habe ich noch mit C++. Früher habe ich gern mit Delphi gearbeitet. Inzwischen versuch ich mich (langsam) intensiver an Java. Ansonsten sind da noch basics zu pascal, basic, php, html vorhanden.

das mit den slashes probiere ich am weekend. bin graad aufm sprung. melde mich dann wieder
Titel: Re:von Java aus auf Notes-DB zugreifen
Beitrag von: Axel_Janssen am 13.07.03 - 21:52:43
Hi,

du kannst das starten der Java-Anwendung auf unterschiedliche Weise vereinfachen.

Die klassische Methode ist einfach eine .bat - Datei. Für diese kann man dann ja auch Verknüpfungen auf den Desktop ziehen.

Dort schreibst du dann 2 Zeilen in der Art wie:
Code
set Classpath=notes.jar;graphic_lib.jar;programm.jar;%Classpath%;
java de.myprog.MainClass;
Heute gibt es aber noch weitere Möglichkeiten, die sich um die Manifest.mf Datei drehen. Nicht ganz sicher, aber falls mich meine Erinnerung nicht täuscht, wenn du im Manifest.mf einer jar auf diese Art die Startklasse angibst, braucht man nur doppelt draufzuklicken. Vielleicht gibt es da auch noch einen Zusatztrick. Steht sicher irgendwo hinter den unten geposteten Links.:
Code
Main-Class: classname

Netbeans (damit arbeitest du, oder?) hat einen sehr brauchbaren jar-Editor.

Hier eine Beschreibung wie du ihn benutzt:
File – New
Jar Archives – Jar Recipe
1. Tab: Namen angeben
2. Tab: Files auswählen: jede Klasse einzeln. Funktioniert nicht rekursiv auf Paketebene.
3. Tab: Modify, nur wenn man es braucht.
4. Tab: Manifest.mf Editor. Das ist sehr gut.

Hier noch ein paar weitere Meldungen:
web page (http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=33&t=004314)
best web page (http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=33&t=005550)
confusing  web page (http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=33&t=005619)
Gregg Bollinger hat eine neue Idee  web page (http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=33&t=006886)