Wie lookup JNDI-Ressourcen für WebLogic?
Verwendete ich eine legacy-Anwendung auf WebLogic 11g abschließen. Der Antrag hat folgenden code:
Context context = new InitialContext();
dataSource = (javax.sql.DataSource) context.lookup("java:myDataSource");
Ich habe auch eine Datenquelle konfiguriert WebLogic mit dem JNDI-Namen:
jdbc/myDataSource
Wenn die oben genannten java-code ausgeführt wird, erhalte ich folgende exception:
javax.naming.NameNotFoundException: While trying to look up /myDataSource in /app/webapp/axis2.war/60105275.; remaining name '/myDataSource'
at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)
at weblogic.jndi.internal.ApplicationNamingNode.lookup(ApplicationNamingNode.java:144)
Ich bin Recht neu auf JNDI, also meine Frage ist? Wo ist das trennen in der Benennung? Was bedeutet es, wenn ein Kontext-lookup hat das Präfix "java:" ?
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie in der Lage sein, einfach das zu tun diese:
Wenn Sie schauen es sich von einem remote-Ziel, die Sie verwenden müssen die WL initial context factory wie diese:
weblogic.jndi.WLInitialContextFactory
java
ist die root-JNDI-Namensraum der Ressourcen. Was die ursprünglichen code-snippet bedeutet, dass der container die Anwendung wurde ursprünglich bereitgestellt in der Tat nicht für jede zusätzliche namespaces zu den JNDI-Kontext, die Sie abgefragt haben (als Beispiel, Tomcat fügt automatisch alle Ressourcen auf den namespacecomp/env
, so würden Sie zu tun habendataSource = (javax.sql.DataSource) context.lookup("java:comp/env/jdbc/myDataSource");
wenn die Ressource-Referenz name istjdbc/myDataSource
).Zu vermeiden, ändern Sie Ihre legacy-code, den ich denke, wenn Sie registrieren Sie die datasource mit dem Namen
myDataSource
(entfernen Sie diejdbc/
) Sie sollten in Ordnung sein. Lassen Sie mich wissen, ob das funktioniert.Ich hatte ein ähnliches problem auf diese eine. Es wurde gelöst durch löschen der
java:comp/env/
Präfix und mitjdbc/myDataSource
im Kontext nachschlagen. Gerade als jemand darauf hingewiesen in den Kommentaren.Ich hatte gerade das update legacy Weblogic 8-app verwenden Sie eine Daten-Quelle, anstatt hartcodierte JDBC-string.
Datasource JNDI-name auf der Registerkarte Konfiguration des Weblogic-Administrators zeigte: "weblogic.jdbc.ESdatasource", unten sind zwei Wege, die funktionierte:
That ' s all folks. Keine Passwörter und initial context factory benötigt, die aus dem inneren des Weblogic app.