Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: Thomator am 08.08.07 - 09:35:00

Titel: Domino-JVM -> -Xverify:none
Beitrag von: Thomator am 08.08.07 - 09:35:00
Hallo,
kann mir jemand sagen, ob es möglich ist, generelle JVM-Startparameter für den Domino zu übergeben?
Ich müßte -Xverify:none bei Starten der JVM übergeben, habe aber noch keinen entsprechenden notes.ini-parameter oder Ähnliches gefunden...

Danke schon mal
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: flaite am 08.08.07 - 10:29:40
Vielleicht
Code
JavaVeifyRemote=0  
???
http://www.ibm.com/developerworks/lotus/library/ls-Java_variables/index.html

blöd, dass man die Variablen nicht einfach irgendwo angeben kann und Notes die beim starten der VM durchreicht, wie Eclipse das macht (wobei das dort auch seine Macken hat).
 
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: Thomator am 08.08.07 - 10:36:37
Hallo Axel,
den Parameter hab ich schon probiert, der tuts nicht. Da wird offensichtlich an der Security-Prüfung, also wer darf was, geschraubt.
Was ich benötige ist die Möglichkeit, beim Binding bzw. Linken die ClassNotFound-Exceptions zu unterbinden.
Is aber auch nervig, dass der 7'er Domino immer noch die 1.3 JVM dabeihat...
 >:(
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: flaite am 08.08.07 - 10:48:56
Das geht auch mit xverify nicht.
Du könntest das höchstens sehr vermutlich mit catch (Throwable t) catchen.
Aber warum willst du das?
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: Thomator am 08.08.07 - 11:01:42
Angelich macht der XVerify-Parameter genau das. Ich benötige das für die Benutzung des 5'er MySQL-Connectors aus einem Java-Agenten. Dort werden für bestimmte Caching-Optionen und Rollback-Mechanismen Klassen wie LinkedHashMap  oder java.sql.Savepoint verwendet, die aber in java 1.3 nicht existent sind. Da die entsprechenden Mechanismen nicht verwendet werden ist das auch kein Problem, aber er prüft halt beim Binden/Linken die Importe.
Als Workaround ist bei MySql eben die Verwendung dieses Parameters angegeben, nur mit der Übergabe klapps im Domino nicht.

EDIT:
zur Ergänzung ein Auszug aus der Dokumentation des Connectors:
Zitat
Because of the implementation of java.sql.Savepoint, Connector/J 3.1.0 and newer will not run on JDKs older than 1.4 unless the class verifier is turned off (by setting the -Xverify:none option to the Java runtime). This is because the class verifier will try to load the class definition for java.sql.Savepoint even though it is not accessed by the driver unless you actually use savepoint functionality.
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: flaite am 08.08.07 - 12:26:57
Vielleicht kannst du auch einfach eine ältere Version des MySQL Connectors benutzen:
http://dev.mysql.com/downloads/connector/j/3.1.html
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: Thomator am 08.08.07 - 13:33:33
Die Idee hatte ich auch schon, das Problem bleibt das Gleiche. In der Version 3.1 wird aus dem Paket java.sql die Klasse Savepoint verwendet, die es erst seit 1.4 gibt...
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: flaite am 08.08.07 - 14:16:40
Das ist echt ein Problem.

so weit ich mich erinnern kann, benutzt domino7 schon jsdk1.4, nur sind diese JDBC 3.0 Klassen offenbar erst seit jsdk1.4.2 in der Sun JVM.
Laut jarfinder findet sich die Klasse Savepoint auch in rt.jar von J2EE 1.4 (EE nix mit SE) http://www.jarfinder.com/?class=java.sql.SavePoint&submit=search , aber das in lib/ext zu packen scheint mir ein bischen overkill.

Die postgres Leute haben hier eigentlich einen vernünftigen Weg genannt.
(http://archives.postgresql.org/pgsql-jdbc/2001-12/msg00108.php)
Vielleicht gibts irgendwo die extra Klassen/Interfaces von JDBC3.0 als separaten download  :-:
Ich weiss aber nicht wo. Vermutlich werden die Runtime auch nirgendwo wirklich aktiv genutzt in deinem Anwendungsfall.


Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: Thomator am 08.08.07 - 14:17:25
Nee, Domino 7 nutzt immer noch die 1.3'er jvm. Das ist ja das schlimme...
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: m3 am 08.08.07 - 14:25:43
Nee, Domino 7 nutzt immer noch die 1.3'er jvm. Das ist ja das schlimme...
Also laut Johan Känngård (http://johankanngard.net/2006/02/09/java-versions-in-lotus-domino-and-notes/) und IBM (http://www.ibm.com/support/docview.wss?uid=swg21188789) hat man unter Domino 7 die JRE/JDK 1.4.2.
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: Thomator am 08.08.07 - 14:28:09
Ich hab erst eben mal ins Lizenz-file der JRE im Domino geschaut und danach sicherheitshalber mir das Ganze auch noch mal per Agenten ausgeben lassen.
Da ist definitiv die 1.3.1 drin.
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: flaite am 08.08.07 - 14:35:55
Scheint aber so zu sein, dass die JDBC 3.0 Klassen nicht dabei sind. 
Interessanter Fall.
Wenn ich morgen früh die Energie hab, poste ich das auf Notes.net mit möglichst vielen Infos (wir haben einige hier gesammelt).
Vielleicht kann man das mit relativ aufwendigen hacks faken.
z.B. die fehlenden Interfaces, Klassen als minimalversionen in selbstkompilierten jar und das in lib/ext. Eigentlich darf man zwar keine Packages mit java. anfangen, aber afaik wird das nicht vom Compiler oder sonstwie geprüft.

Gruß Axel
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: m3 am 08.08.07 - 14:39:41
Ich hab erst eben mal ins Lizenz-file der JRE im Domino geschaut und danach sicherheitshalber mir das Ganze auch noch mal per Agenten ausgeben lassen.
Da ist definitiv die 1.3.1 drin.
Dann hast Du aber den Wurm drinnen.
Ich hab mir jetzt schnell mal einen Java-Agent geschrieben der diese beiden Befehle ausführt
Code
System.out.print("    running with JRE-version ");
System.out.println(System.getProperty("java.version"));

Auf dem 7er-Server gestartet:
Code
> show server
Lotus Domino (r) Server (Release 7.0.2 for Windows/32) 08.08.2007 14:38:29
...

> tell amgr run "scratch/scratch.nsf" 'jre'
08.08.2007 14:35:36   JVM: Java Virtual Machine initialized.
08.08.2007 14:35:37   AMgr: Start executing agent 'jre' in 'scratch\scratch.nsf'

08.08.2007 14:35:40   Agent Manager: Agent printing:     running with JRE-version
08.08.2007 14:35:40   Agent Manager: Agent printing: 1.4.2
08.08.2007 14:35:40   AMgr: Agent 'jre' in 'scratch\scratch.nsf' completed execution


1.4.2 auf Domino 7.
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: flaite am 08.08.07 - 14:44:22
Die Nummern sagen nur bedingt was.
Öffne mal bitte jemand rt.jar mit einem zip Tool und schaue nach, ob dort im Ordner java/sql die Klasse SavePoint drin ist.
(hab hier keinen 7er Client).
Das ist das entscheidende.
Der xVerify:none Vorschlag ist eigentlich sehr gut. Man sollte ihn aber bei Revisionen besser verschweigen, wobei das meiner Ansicht nach die Sicherheit des Systems nur theoretisch beeinträchtigt. Aber das scheint mit der Notes-JVM nicht zu gehen.

Gruß Axel
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: Thomator am 08.08.07 - 14:46:02
Ich habe fast die Befürchtung, dass bei meiner Domino-Installation was im Argen liegt. Ich hab den 7'er damals installiert, ohne den 6' zu verschieben. Der hat dann fein den 6'er Übergebügelt und nimmt auch gleich die jre? Das kann ich fast nicht glauben. Aber laut der Aussagen in Deinen Links sollte da schon 1.4 drin sein...
 ???
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: m3 am 08.08.07 - 15:06:06
@Axel: eine rt.jar finde ich nicht im Domino-Verzeichnis.

@Thomator: Ja, scheint so.
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: it898ur am 08.08.07 - 15:57:55
Beim Update von 6 auf 7 löscht IBM nicht alle JVM Reste des 6er Clients. Dadurch existieren manche Java-Classen in verschiedenen Jar-Files doppelt und der Client nutzt die alten !
Hier hilft nur der Austausch des JVM-Verzeichnisses des Notes-Clients oder besser eine Deinstallation und eine richtige Neuinstallation des 7er Clients, sonst trifft man immer wieder "alte Bekannte".

Gruß

André
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: flaite am 08.08.07 - 16:03:13
@Axel: eine rt.jar finde ich nicht im Domino-Verzeichnis.
Sollte aber in Domino-Programm/jvm/lib sein.
Danke für das mitdenken.  ;D

Gruß Axel
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: it898ur am 08.08.07 - 16:05:28
Die rt.jar gibt es in Notes 7 nicht mehr, die entsprechenden Klassen verteilen sich auf andere Jar-Files.

Gruß

André
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: Thomator am 08.08.07 - 16:14:08
So...
Domino7 neu installiert, und alles funzt. Die JVM ist 1.4.2 und da ist auch JDBC3.0 dabei.

Danke für die Hilfe, auf DEN Fehler wär ich alleine wahrscheinlich nie gekommen. Dass er mir den 6'er gebügelt hat, ok... Aber dann noch die alte JRE zu nutzen, das ist, na ja, unterirdisch und sollte strafrechtlich verfolgbar sein. :-P
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: flaite am 08.08.07 - 16:17:02
Die rt.jar gibt es in Notes 7 nicht mehr, die entsprechenden Klassen verteilen sich auf andere Jar-Files.
Das wäre ein klassischer Fall von, warum tun die sowas  ???
Noch in der JRE von java6 von Sun sind die Standard-SDK-Klassen in einer jar namens rt.jar.

 ::)

@Thomator: Solche Classpath Probleme können aber immer wieder mal aufkommen. Gute Kandidaten sind Application Server und XML-Parser.

Gruß Axel
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: Thomator am 08.08.07 - 16:47:22
@Axel
Classpathprobleme ist gut. Das war die JRE im Domino-Verzeichnis, die er von der 6'er Installation adaptiert hat oder wie auch immer man das nennen will.
Titel: Re: Domino-JVM -> -Xverify:none
Beitrag von: flaite am 08.08.07 - 19:43:19
Einer der vielen Spezialfälle  von Classpath Problem  ;)
Ein großes Buch.