AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
17.09.21 - 03:55:00
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  HCL Notes / Domino / Diverses
| |-+  Entwicklung (Moderatoren: eknori, fritandr, koehlerbv, Tode)
| | |-+  Domino 11.0.1: Externe JAR einbinden und verwenden (Linux)
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Domino 11.0.1: Externe JAR einbinden und verwenden (Linux)  (Gelesen 2200 mal)
Tode
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6618


Geht nicht, gibt's (fast) nicht... *g*


WWW
« am: 05.03.21 - 09:16:22 »

Ich habe unter 9.0.1 eine "Datenpumpe" geschrieben, die mittels JDBC Daten aus / in relationale Datenbanken pumpt, quasi "IEI für Arme".
Damit das auf dem Server sauber funktioniert, habe ich den JDBC- Treiber unter /opt/hcl/domino/notes/latest/linux/jvm/lib/ext

abgelegt. In der Java Scriptlibrary lade ich dann die Class:

Code:
Class.forName(m_strjClassName);
// Connect to the database

if (m_strjUserName != "") {
m_lcConProp.put("user", m_strjUserName);
m_lcConProp.put("password", m_strjPassword);
}
m_lcCon = DriverManager.getConnection(m_strjUrl,m_lcConProp);

Das hat unter 9.0.1 wunderbar funktioniert (ohne Anpassung java.policy / java.pol), aber seit dem Update auf 11.0.1 lädt er die Klasse nicht mehr.

Zitat
24.02.2021 06:00:08 AMgr: Agent ('java.JDBC_Periodical' in 'apps/DataPump.nsf') error message: Exception in thread "AgentThread: JavaAgent"
24.02.2021 06:00:08 AMgr: Agent ('java.JDBC_Periodical' in 'apps/DataPump.nsf') error message: java.lang.NoClassDefFoundError: com.mysql.cj.jdbc.Driver (initialization failure)

Ich verwende den aktuellsten mySQL- Treiber, der explizit für Java 8 ist (mit Domino 11 wurde ja auf openjvm 1.8 umgestellt). Die Linux- Berechtigungen auf "mysql-connector-java-8.0.23.jar" sind identisch zu denen der anderen jars aus dem Verzeichnis.

Ich meinte irgendwo was gelesen zu haben, dass externe jars in Agenten Probleme machen seit Domino 10 oder 11, kann aber ums Verrecken den/die Artikel nicht mehr finden.

Irgendwelche Tipps für mich?
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1224



« Antworten #1 am: 05.03.21 - 11:37:23 »

Bei einem Domino 11.0.1FP2 und für Oracle ist das genau so im Einsatz.

Der Oracle-Treiber als Archiv im Agenten gingt nicht, das erzeugte Java-Fehlermeldungen, sollte man in diesen Fall aber ausprobieren. Und es gibt noch die Möglichkeit über die notes.ini und JavaUserClasses Java-Archive bekannt zu machen.
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
maxritti
Senior Mitglied
****
Offline Offline

Beiträge: 462


« Antworten #2 am: 05.03.21 - 13:45:03 »

Ich meinte irgendwo was gelesen zu haben, dass externe jars in Agenten Probleme machen seit Domino 10 oder 11, kann aber ums Verrecken den/die Artikel nicht mehr finden.

Hilft Dir nicht wirklich, aber zumindest unter Domino 10 habe ich solch ein Konstrukt zu einem MS SQL Server laufen.
Die jar Datei einfach in das von dir angegeben Verzeichnis und gut ist.  Ahnungslos
Gespeichert
Ralf_B
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 122


« Antworten #3 am: 08.03.21 - 08:34:02 »

Ich habe die selbe Erfahrung wie Erik,
die Libs im Agenten machen Probleme. Im lib/ext Ordner geht es.
Ich nutze SAP JCO/und andere ...   und musste auf Win/AIX die Java Security anpassen, weil die Lib's sonst nicht geladen wurden.
Allerdings nur Domino 9/10 und nicht 11.
Gespeichert
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11560


« Antworten #4 am: 08.03.21 - 17:15:03 »

Ist das überhaupt die richtige Basisklasse? Ich verwende die ...20 in einem OSGi plugin. In V ..22 funktioniert das auch noch. V ..23 habe ich noch nicht reingeschaut. Grundsätzlich verwende ich den gleichen Aufruf, wie Du.
Werden andere .jardenn aus dem Verzeichnis ohne Fehler geladen?

Was die libs in Agenten angeht, dazugibt es einen SPR von mir. Die libs werden bei jedem Aufruf neu geladen und führen irgendwann zu einem Speicherüberlauf.
Das soll gefixt werden, ist aber ein größeres Rad, an dem gedreht werden muss.
Ob ich das in meinem Leben noch erlebe, wage ich zu bezweifeln.
Gespeichert
Tode
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6618


Geht nicht, gibt's (fast) nicht... *g*


WWW
« Antworten #5 am: 08.03.21 - 19:19:39 »

Hi zusammen, danke für die Hilfe bisher. Ich habe nur diese eine jar im Verzeichnis, deshalb weiss ich nicht, ob andere geladen werden. Vor dem update des Servers von 9.0.1FP9 auf 11.0.1 FP2 war im selben Verzeichnis (nur IBM statt HCL) eine ältere Version der Library und das ist schon ewig gelaufen. Nach dem Update ging es nicht mehr, da habe ich versucht, ob es an der Version der Lib liegt und die neuste reingepackt. Eine Änderung an der java.pol bzw. Java.policy war nicht notwendig (unter 11 gibt es ja eh nur noch eine der beiden)...

Ach ja: die anderen jars in dem Verzeichnis sind nich custom, das sind die default dateien, die da immer liegen...

Bin etwas ratlos...
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1224



« Antworten #6 am: 08.03.21 - 19:47:43 »

Der Fehler "java.lang.NoClassDefFoundError: com.mysql.cj.jdbc.Driver" besagt das er die Java-Klasse nicht findet, das bedeutet er findet die bereitgestellte Jar-Datei nicht.
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11560


« Antworten #7 am: 08.03.21 - 20:10:02 »

Packe die .jar mal ins ndext Verzeichnis. Ich vermute, dass dein jvm/lib/ext nicht im classpath ist.
Gespeichert
Tode
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6618


Geht nicht, gibt's (fast) nicht... *g*


WWW
« Antworten #8 am: 09.03.21 - 10:17:00 »

Ich dachte, der wäre automatisch immer drin. Ich werde das am Donnerstag mal probieren (vorher komme ich nicht in die Umgebung). Danke für die Hinweise. Ansonsten werde ich mir mit der INI- Variable JavaUserClasses zu helfen versuchen.
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
Tode
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6618


Geht nicht, gibt's (fast) nicht... *g*


WWW
« Antworten #9 am: 11.03.21 - 09:19:34 »

OK. Jar ist jetzt im ndext. Jetzt bekomme ich tatsächlich eine andere Meldung:

Zitat
java.security.AccessControlException: Access denied ("java.lang.RuntimePermission" "setContextClassLoader")

Ich habe die java.policy geprüft, da steht folgender Eintrag:

Code:
grant codeBase "file:${notes.binary}/ndext/*" {
        permission java.security.AllPermission;
};

Aber "AllPermission" ist hier wohl irreführend. Ich habe es mal so ergänzt:

Code:
grant codeBase "file:${notes.binary}/ndext/*" {
        permission java.security.AllPermission;
        permission java.lang.RuntimePermission "setContextClassLoader";
};

Da immer noch die gleiche Meldung kommt, fürchte ich jetzt nur, dass ich den Domino Server für das Einlesen der neuen policy durchstarten muss, denn das durchstarten des AMGR hat keine Änderung gebracht, und in einer Anleitung zu Domino Volt steht, dass man nach Änderung der java.policy den Domino durchstarten soll...

EDIT: Grade geprüft... wenn man in der "alten" Errormessage weiter runterscrollt, dann war schon dort die selbe Ursache "AccessControlException" drin... man sollte einfach die Fehler zu Ende lesen und nicht bei dem ersten Hinweis losrennen... also ist wohl auch in Domino 11 jvm/lib/ext immer noch im Standardpfad, und die Ursache ist eine Änderung in der Policy (oder ich hatte damals beim Einrichten tatsächlich eine java.pol gepflegt und das nicht dokumentiert)
« Letzte Änderung: 11.03.21 - 09:28:46 von Tode » Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
Ralf_B
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 122


« Antworten #10 am: 11.03.21 - 10:14:52 »

Wir hatten bislang bei einem Domino 11 Server den Fall, dass wir zusätzlich zu AllPermission auch das Laden explizit ergänzen mussten.
Warum auch immer.

Edit: Ich hab in meiner Doku auch den Punkt des Neustarts des Servers nach der Policy Änderung.
« Letzte Änderung: 11.03.21 - 10:19:27 von Ralf_B » Gespeichert
Tode
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6618


Geht nicht, gibt's (fast) nicht... *g*


WWW
« Antworten #11 am: 11.03.21 - 13:45:36 »

OK. dann warte ich mal den Neustart ab und schaue, ob das dann funktioniert. Danke für die Rückmeldung
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11560


« Antworten #12 am: 02.06.21 - 10:00:57 »

FYI:
Ich bin gerade mit Domino 12 (Windows) auf das gleiche Problem gestossen.
Ohne eine Änderung der java.policy habe ich es auch nicht hinbekommen.

Was ich sehr verwirrend finde it, das HCL bitidentisch den code auch im Traveler verwendet, und der kann den selben Treiber im selben Pfad problemlos laden. Nur mein OSGi plugin nicht.


Und hier noch eine Info, die ich in einem anderen Forum gefunden habe https://bugs.mysql.com/bug.php?id=88172
Sieht so aus, als ob der Treiber das Problem ist, und der intern ein flag setzt, was dann zu dem security issue führt. Also nicht einmal der ausführende Java code.
  
« Letzte Änderung: 02.06.21 - 10:05:00 von eknori » Gespeichert
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11560


« Antworten #13 am: 02.06.21 - 21:49:37 »

Es hat wohl eine Änderung gegeben, wie die JVM in den einzelnen Diensten initialisiert wird. Das betrifft nicht nur den Amgr, sondern auch HTTP und DOTS.ab welcher Version? Keine Ahnung.
Die Änderung ist generell kein Problem. Das eigentliche Problem ist das, was in dem o.a. Link zum mysql Treiber beschrieben ist. 
Vor der Änderung war das Problem kein Problem.

Mit anderen Treibern sollte der Code zum dynamiachen Laden eines Treiber auch weiterhin funktionieren.

Ich trage das mal weiter zusammen. Ein sehr spezielles Problem, das evtl. Nur 2 Leute interessiert. Aber egal.
Gespeichert
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11560


« Antworten #14 am: 04.06.21 - 15:14:18 »

Ich habe da mal was aufgeschrieben
https://www.eknori.de/2021-06-04/load-jdbc-sql-driver-at-runtime-in-dots-and-amgr/
Gespeichert
Tode
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6618


Geht nicht, gibt's (fast) nicht... *g*


WWW
« Antworten #15 am: 04.06.21 - 15:33:51 »

Vielen Dank für Das Zusammenschreiben. Das schaue ich mir auf jeden Fall genau an.
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: