J'ai développé une application web Java dans Netbeans 6.5 en utilisant une base de données MySQL et Hibernate. Le serveur de base de données de développement et le serveur d'applications de développement (Tomcat 6) résident tous les deux sur ma machine de développement. Tout fonctionne; l'application extrait correctement les données de la base de données. Maintenant, je suis prêt à le déplacer vers le serveur de production. Encore une fois, le serveur de base de données et le serveur d'applications sont sur la même machine. Je déploie le fichier WAR et essaie d'accéder à l'application; Je peux accéder aux pages statiques, mais les servlets qui utilisent l'erreur de base de données avec l'exception:De Netbeans Dev à Tomcat Production: Connexion DB introuvable
org.hibernate.exception.JDBCConnectionException: Cannot open connection
Je suis sûr que le problème concerne Tomcat ne pas connaître la source de données. Il semble que Netbeans gère cela pour moi. J'ai lu que je pourrais avoir besoin d'ajouter une entrée RESSOURCES donc je pris quelques conseils de this site qui m'a donné une context.xml de:
<?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>
un web.xml de:
<?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>
et un hibernate.cfg.xml de:
<?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>
maintenant, je reçois une erreur org.hibernate.HibernateException: Could not find datasource
. Suis-je sur la bonne voie pour passer du développement à la production? Qu'est-ce que je rate?