Wenn ich den folgenden Lookup in meinem Code versuche:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
return (DataSource) envCtx.lookup("jdbc/mydb");
Ich erhalte die folgende Ausnahme:
java.sql.SQLException: QueryResults: Unable to initialize naming context:
Name java:comp is not bound in this Context at
com.onsitemanager.database.ThreadLocalConnection.getConnection
(ThreadLocalConnection.java:130) at
...
Ich habe das eingebettete JBoss gemäß der JBoss Wiki-Anweisungen . Und ich habe Tomcat so konfiguriert, dass er jede WAR standardmäßig scannt, wie in der Konfigurations-Wiki-Seite .
Ich zitiere die Konfigurationsseite:
JNDI
Eingebettete JBoss-Komponenten wie Verbindungspooling, EJB, JPA und Transaktionen machen machen ausgiebig Gebrauch von JNDI, um Dienste zu veröffentlichen. Embedded JBoss setzt die JNDI-Implementierung von Tomcat außer Kraft Implementierung von Tomcat, indem es sich auf die JNDI-Instanziierung von Tomcat aufbaut. Hierfür gibt es einige > Gründe:
- Um zu vermeiden, dass jeder einzelne dieser Dienste in server.xml deklariert werden muss
- Ermöglicht die nahtlose Integration des java:comp-Namensraums zwischen Webanwendungen und EJBs.
- Die JNDI-Implementierung von Tomcat weist einige kritische Fehler auf, die einige JBoss Komponenten in ihrer Funktionsfähigkeit
- Wir möchten Ihnen die Möglichkeit bieten, EJBs und andere Dienste, die > aus der Ferne abgerufen werden können, zu remoten.
Hat jemand eine Idee, wie ich den JBoss-Namensdienst konfigurieren kann, der laut dem obigen Zitat die JNDI-Implementierung von Tomcat außer Kraft setzt, so dass ich einen Lookup auf java:comp/env durchführen kann?
FYI - Meine Umgebung Tomcat 5.5.9, Seam 2.0.2sp, Embedded JBoss (Beta 3),
Hinweis: Ich habe eine -ds.xml-Datei für meine Datenbankverbindung ordnungsgemäß eingerichtet und kann auf den Klassenpfad gemäß den Anweisungen zugreifen.
Beachten Sie auch: Ich habe diese Frage im eingebetteten Jboss-Forum und im Seam-Benutzerforum gestellt.