Pfff. Man muß mir ja nicht antworten.
Ich will keinen "Dampf ablassen". Ich will diskutieren.
Erklär mir bitte einmal diese Aussage. Ich verstehe sie nicht.
- was passiert, wenn man JAR's in's /jvm/lib/ext legt? Üblicherweise steht im \jvm\lib\security\java.policy File folgendes:
Code:
// Standard extensions get all permissions by default
grant codeBase "file:${java.home}/lib/ext/*" {
permission java.security.AllPermission;
};
Das ist afaik schlicht und einfach nicht wahr. Das eine hat mit dem anderen nichts zu tun.
Moin moin,
also erstmal vorneweg: ich will nicht wieder "an-ecken", ok? Also bitte nicht gleich explodieren, wenn ich jetzt frage: "warum nicht?". Hilf mir doch hier bitte mal über den Berg, vielleicht habe ich mich ja völlig in die falsche Ecke verirrt. Eine einfache und nachvollziehbare Erklärung konnte mir bisher niemand geben
.
Der Reihe nach:
1. Laut IBM wird die Funktion, JAR's in der NSF zu halten, unterstützt. Ich habe im Rahmen der PMR-Bearbeitung den in der DB verwendeten Java-Agenten beschrieben und bekam als Antwort sinngemäß zurück: Ja, müßte alles so gehen.
2. Unsere java.policy Datei sieht tatsächlich so aus. Und zwar überall. Vielleicht ist unser Installations-Package das Einzige auf der Welt, bei dem das so ist... schon möglich. Wie SOLLTE die Datei denn aussehen? Hat Deine java.policy Datei auf den Domino Servern diesen Eintrag nicht?
3. Wenn JAR's in der NSF liegen, müssen diese für die JVM vor dem Verarbeiten erst im Filesystem abgelegt werden, richtig? Als temporäre Datei? Oder wird die Ressource zur JVM quasi "gestreamt"?
3.1. Bei diesem Vorgang kann jetzt etwas schiefgehen, das habe ich schon verstanden. Einigen Foren-Posts zufolge kann ein stark belasteter Domino Server z.B. beim detachen in ein Timeout laufen. Da ich mein Problem auf einem Testserver, auf dem ausschließlich dieser eine Agent läuft, nachvollziehen kann, schließe ich sowas schonmal aus.
Bleibt die Frage, WAS geht da schief? Eine Dateiressource aus einer NSF in's Dateisystem schreiben... daß das technisch geht, habe ich erst einmal vorausgesetzt.
4. Im Notes Log steht "... JVMDUMP006I Speicherauszugsereignis "systhrow", Detail "java/lang/OutOfMemoryError" wird verarbeitet", also habe ich erst einmal in dieser Richtung weitergemacht und versucht, etwas mit den Dumps anzufangen.
5. Vielleicht kann ich die Aussagen der Analyse-Tools im IBM Support Assistant ja nicht richtig interpretieren. Da mir die IBM Experten bisher nicht helfen konnten, habe ich es trotzdem mal versucht, mich mit dem Thema zu beschäftigen. Wenn ich die Memory Dump Diagnostics über ein *.phd File laufen lasse, dann tauchen dort als "Verlustkandidaten" auch immer wieder "java/Security/..." Einträge auf.
An dieser Stelle habe ich mich gefragt, was genau passiert, wenn ein JAR aus einer NSF extrahiert wird. Weißt Du es? Wird die JAR-Datei tatsächlich in's Filesystem geschrieben? Wenn ja - in welches Verzeichnis? Was passiert dabei noch? Muß etwas beachtet werden, damit alles funktioniert? Wenn ja - was?
Jetzt die Spekulation (nochmal: bitte nicht gleich explodieren, ich laß' es mir gern erklären):
- wenn ein Prozeß auf eine Ressource nicht zugreifen kann, dann kann das unterschiedliche Ursachen haben: Variante1 - Ressource nicht da. Variante 2 - keine ausreichenden Rechte. Variante 3 - ein anderes technisches Problem.
- Variante 1 habe ich ausgeschlossen, da die JAR Files in der NSF sind und sich manuell auch detachen lassen.
- Für Variante 3 habe ich erst einmal keine weiteren Indizien.
- Bleibt Variante 2 - Rechteprobleme. Hm.
- was, wenn der AgentLoader ein Rechteproblem mit den JAR's hat? Im weitesten Sinne? Die aufrufende Methode, bei der etwas schiefgeht, könnte dann "explodeArchive" und "addAttachment" sein (wenn man dem Notes Log glauben darf), die URSACHE liegt vielleicht davor?
- Bsp. (Achtung: reines Gedankenexperiment!!!): die JAR's werden in /jvm/lib/temp geschrieben, auf dieses Verzeichnis hat der AgentLoader warum-auch-immer nicht die richtigen Rechte... Ergebnis: Fehler. Irgendetwas in der Art?
Die Db ist komplett durchsigniert, d.h. die Domino Gestaltungselemente sind es. Aber Ressourcen, wie z.B. JAR-Files? Wie soll ich die aus Notes heraus signieren? Außerdem hat die Notes Signatur mit Java-Security wenig zu tun (glaube ich zu wissen) - es sei denn, IBM hat da was eigenes in die JVM eingebaut.
Ich habe bisher keine schlüssige Erklärung für meine Fragen gefunden, daher - da hast Du völlig Recht - ist das reine Spekulation. Ich hoffe, daß ich zumindest erklären konnte, wo mein Verständnisproblem liegt und wie ich auf die Security-Schiene gekommen bin. Ist vielleicht ein Holzweg - ok. Mir wäre es sehr lieb, wenn ich das Problem abhaken könnte, möchte es vorher aber bitte verstehen.
Zum Thema PMR und IBM: Wenn es ein bekanntes(!) Problem mit dem Agentloader gibt, sollen die IBM-Leute es einfach offiziell sagen und (1) einen Workaround anbieten und (2) einen Termin/eine Version benennen, wo der Prozeß (wieder) funktioniert. Was ist daran so schlimm? Ich habe schon mit vielen IT-Firmen zu tun gehabt - immer gab es irgendwelche Probleme. IBM ist da keine Ausnahme und ich vertraue auf IBM-Lösungen auch erst dann, wenn ich sehe, daß alles funktioniert - und nicht auf das bloße Wort hin. Gerade bei PMR's habe ich den Eindruck, das meiste alleine machen zu müssen und die IBM-Supporter mit Ideen und Lösungsvorschlägen unterstützen zu müssen... vielleicht kommt daher auch mein Antrieb in diesem Fall, selbst noch etwas nachzuforschen.
So... ich hoffe, wir können aus meiner holprigen Vorlage jetzt noch was Sinnvolles machen