Probleme mit JNDI-Datenquelle in Tomcat
Ich habe eine harte Zeit eine JNDI-Datenquelle arbeiten. Folgende Anweisungen an
http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html
Ich bin die Verbindung zu oracle mit Tomcat5.5
Ich kann eine Verbindung in Ordnung, wenn ich direkt JDBC-Verbindung im code.
Hier ist was ich habe:
in meinem META-INF/context.xml:
<Resource name="jdbc/mydb" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:theserver:1521/mydb"
username="user" password="password" maxActive="20" maxIdle="10"
/>
hier ist das, was in web.xml:
<resource-ref>
<description>please work</description>
<res-ref-name>jdbc/mydb</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>Container</res-auth>
</resource-ref>
hier ist der code:
Connection conn = null;
try{
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/mydb");
conn = ds.getConnection();
} catch ....... etc.
Habe ich versucht, viele verschiedene Konfigurationen und begann ein neues, einfaches Projekt, um sicherzustellen, dass keine zusätzlichen jar-Dateien Konflikt oder so etwas, aber .
kann jemand sehen, was nicht richtig Aussehen?
den Fehler auf dem server gibt eine NullPointerException wenn ich versuche, verwenden Sie das conn-Objekt.
entschuldigen Sie mich, es erste Angebote: org.apache.tomcat.dbcp.dbcp.SQLNestedException: kann Nicht erstellen PoolableConnectionFactory (E /a-Ausnahme: Der Netzwerkadapter konnte nicht hergestellt die Verbindung)
InformationsquelleAutor mcgyver5 | 2009-12-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die url der Datenbank scheint defekt zu mir.
versuchen:
Das problem auf dem server ist jetzt org.apache.Unterhaus.dbcp.SQLNestedException: Cannot create JDBC-Treiber-Klasse " für connect URL 'null' einige andere threads zeigen, die ich brauche, um den Pfad und docBase in meinen context-element? Kann das nicht funktionieren.
Wo ist der oracle-Treiber-jar-Datei auf dem server platziert ?
nos, es ist in TOMCAT_HOME/common/lib. huh. es ist auch in TOMCAT_HOME/webapps/MyTestApp/WEB-INF/lib
Rechts, Tomcat kopiert Ihr META-INF/context.xml aus Ihrem .war-Datei in /catalina/yourhost/yourapp.xml zum Zeitpunkt der Bereitstellung und nicht überschrieben, wenn es schon da ist, hält Sie die alte Datei. So für saubere deimplementierung Sie zu löschen .war-Datei, die explodierte .war-Datei-Verzeichnis, und die Kontext-Konfigurationsdatei von /catalina/yourhost/. Ich denke, dass, wenn Sie heben Sie die Bereitstellung der Anwendung innerhalb der tomcat-manager-Anwendung, die all diese Schritte automatisch für Sie erledigt.
InformationsquelleAutor Sylar
"Der Netzwerkadapter konnte nicht hergestellt die Verbindung"
Dies ist Ihr Anhaltspunkt. Es kann nicht erreichen die Datenbank. Überprüfen Sie Ihren server und port korrekt sind, überprüfen Sie sind erreichbar von Ihrem Computer.
InformationsquelleAutor Sean Owen
Ich bin reagiert auf die Kommentare von Sebastian beantworten.
Wenn ich sehe, org.apache.Unterhaus.dbcp, bedeutet es, dass Tomcat mit dem eingebauten Apache Commons Database Connection Pooling-Bibliothek instead of die Bibliothek in der Oracle-JDBC-Treiber.
Den Oracle JDBC-Treiber nicht in das common-Verzeichnis ist in der Regel das erste problem versuche ich zu lösen. Es scheint, das ist nicht dein problem.
Zweite, wenn die Anwendung gestartet wird, wenn es ein problem erstellen Sie die JNDI-datasource mit Tomcat können die Commons-Bibliothek. Dies kann in Ihrem Fall wegen Ihrer falschen Datenbank-URL. Korrektur context.xml oder den kopierten/umbenannten Datei in die conf/Catalina/localhost Verzeichnis kann nicht das problem beheben, ohne zu stoppen und Neustarten von Tomcat. Also, ich würde empfehlen, stoppen und Neustarten von Tomcat zu sehen, ob dies behebt das problem.
Einen letzten Hinweis, der link, den Sie bieten ist für die Einrichtung der Gemeinsamen Bibliothek. Es dauerte eine Weile, um dies herauszufinden. Unten ist ein Beispiel einer meiner JNDI-Oracle datasource-Definitionen.
Ich bin nicht sicher, ob die Art ankommt, in Ihrem Fall und ich glaube, der user und Passwort sind immer noch die Attribute der Ressource-tag. Was ich hervorheben möchte ist, dass das Attribut connectionCacheProperties. Hier ist, wo angeben geben Sie die maximale und minimale verbindungen. Gehen Sie zu Verbindungs-Cache-Eigenschaften für weitere Informationen über dieses Attribut.
Hoffe, das hilft.
InformationsquelleAutor prof401