Neuer Benutzer von Tomcat (8.5.9) auf Linux CentOS 7 mit Java SE 8. Ich muss einen einfachen Fehler machen. Dies sollte ein Lehrbuchbeispiel zur Konfiguration eines JDBC-Verbindungspools für Tomcat sein.portieren Web-App auf Tomcat: javax.naming.NameNotFoundException:
Ich habe diesen Fehler:
javax.naming.NameNotFoundException: Name [jdbc/pool1] is not bound in this Context. Unable to find [jdbc]
Jede Idee, was ich falsch machen könnte? Tomcat statesIt is NOT recommended to place <Context> elements directly in the server.xml file.
So mein Setup:
$ CATALINA_HOME/webapps/myapp/META-INF/context.xml ist wie folgt:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/pool1"
auth="Container"
type="javax.sql.DataSource"
username="xx"
password="xx"
driverClassName="oracle.jdbc.OracleDriver"
url="xx"
maxTotal="256"
maxIdle="8"
initialSize="4"
removeAbandonedTimeout="7200"
removeAbandonedOnBorrow="true"/>
<Resource name="jdbc/pool2"
auth="Container"
type="javax.sql.DataSource"
username="xx"
password="xx"
driverClassName="oracle.jdbc.OracleDriver"
url="xx"
maxTotal="256"
maxIdle="8"
initialSize="4"
removeAbandonedTimeout="7200"
removeAbandonedOnBorrow="true"/>
<ResourceLink name="jdbc/pool1"
global="jdbc/pool1"
type="javax.sql.DataSource"/>
<ResourceLink name="jdbc/pool2"
global="jdbc/pool2"
type="javax.sql.DataSource"/>
</Context>
$ CATALINA_HOME/webapps/myapp/WEB-INF/web. XML ist wie folgt:
...
<resource-ref>
<description>xxx</description>
<res-ref-name>jdbc/pool1</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<description>xxx</description>
<res-ref-name>jdbc/pool1</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
...
Der Code bewirkt die Ausnahme:
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("jdbc/pool1");
conn = ds.getConnection();
Ich habe $ CATALINA_HOME/conf/server.xml überhaupt nicht verändert. Habe ich etwas falsch konfiguriert oder fehlt mir irgendwo eine andere Datei?
UPDATE 1
ich zum GlobalNamingResources-Tag in dem $ CATALINA_HOME/conf/server.xml den oben ResourceLinks versucht, das Hinzufügen, dann Tomcat stoppen/starten, aber ich habe den gleichen Fehler.
UPDATE 2
ich die Ressource-Tags aus context.xml oben auch auf die Datei server.xml (GlobalNamingResources-Tag), Stoppen/Starten tomcat dann hinzugefügt, und die gleiche Fehlermeldung anzeigt.
UPDATE 3
Ich habe alles mit Andreas' Hilfe von Experten arbeiten (Danke!) Durch die Art und Weise java Ändern ruft den Pool:
Context initCtx = new InitialContext();
Context context = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) context.lookup("jdbc/pool1");
conn = ds.getConnection();
Auch die ResourceLinks nicht in server.xml sein sollte (Sie erzeugen einfach eine Warnung in tomcat log).
Welcher Code wirft die Ausnahme? – EJP
@EJP Sicher, ich habe den Code hinzugefügt, der die Ausnahme gerade über Update 1 wirft. – user46688