2009-05-13 10 views
1

Ich entwickelte eine Java-Webanwendung in Netbeans 6.5 mit einer MySQL-Datenbank und Hibernate. Sowohl der Entwicklungsdatenbankserver als auch der Entwicklungsanwendungsserver (Tomcat 6) befinden sich auf meinem Entwicklungscomputer. Funktioniert alles; Die Anwendung ruft Daten korrekt aus der Datenbank ab.Von Netbeans Dev zu Tomcat Produktion: DB-Verbindung nicht gefunden

Jetzt bin ich bereit, es auf den Produktionsserver zu verschieben. Der DB-Server und der Anwendungsserver befinden sich wiederum auf demselben Computer. Ich stelle die WAR-Datei bereit und versuche, auf die Anwendung zuzugreifen. Ich kann die statische Seiten zugreifen, aber die Servlets, die die Datenbankfehler aus, mit Ausnahme verwenden:

org.hibernate.exception.JDBCConnectionException: Cannot open connection

Ich bin mir ziemlich sicher, dass das Problem bezieht sich auf Tomcat nicht über die Datenquelle zu kennen. Es scheint, als ob Netbeans das für mich handhabt. Ich habe gelesen, dass ich vielleicht einen RESOURCE Eintrag hinzufügen, damit ich von this site einen Rat nahm die mir gab eine context.xml von:

<?xml version="1.0" encoding="UTF-8"?> 
<Context antiJARLocking="true" path="/EmployeeDirectory"> 
    <Resource 
      name="jdbc/employeedirectory" auth="Container" 
      type="javax.sql.DataSource" username="EmployeeDir" 
      password="EmployeeDirectory" driverClassName="com.mysql.jdbc.Driver" 
      url="jdbc:mysql://127.0.0.1:3306/EmployeeDirectory?autoReconnect=true" 
      maxActive="15"     maxIdle="7" 
      validationQuery="Select 1" /> 
</Context> 

eine web.xml von:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <!-- Omit Servlet Info --> 
    <resource-ref> 
     <description>DB Connection</description> 
     <res-ref-name>jdbc/employeedirectory</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
    </resource-ref> 
</web-app> 

und ein hibernate.cfg.xml von:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.datasource">java:comp/env/jdbc/employeedirectory</property> 
     <property name="hibernate.hbm2ddl.auto">update</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
     <!-- Omit other Mappings --> 
     <mapping class="EmployeeDirectory.data.PhoneNumber" resource="EmployeeDirectory/data/PhoneNumber.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

Nun bekomme ich einen org.hibernate.HibernateException: Could not find datasource Fehler.

Bin ich auf dem richtigen Weg für den Wechsel von der Entwicklung zur Produktion? Was vermisse ich?

Antwort

1

Ich denke, Sie sind auf dem richtigen Weg. Ich würde zuerst die Datenquelle einrichten und sie außerhalb des Ruhezustands verifizieren. Hier ist ein guter Artikel dazu: http://tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.htm und einige Beispiele hier: http://www.mbaworld.com/docs/jndi-datasource-examples-howto.html

Dann würde ich Hibernate konfigurieren, um die Datsource zu verwenden. Vom Blick auf Ihre hibernate.cfg.xml Datei denke ich, sollten Sie versuchen, in hibernate.connection.datasource-jdbc/employeedirectory

0

Tomcat 6 definiert werden sollte, setzt voraus, dass Sie fügen das Ressourcen-Tag der context.xml hinzu, nicht der server.xml. Sie könnten in Tomcat 5.x. Ich habe es funktioniert in einer separaten Installation von Tomcat, aber ich versuche immer noch, Verbindungspooling in NB 6.5 zu verwenden.

Die gleiche Apache-Site verfügt über einen Link zur Tomcat 6-Version von JNDI und weist Sie an, das Ressourcen-Tag der context.xml hinzuzufügen.

Verwandte Themen