我有一個使用Tomcat和Hibernate + c3p0的完美的webapp。 我以編程方式配置hibernate,使用getClass()。getResource(/ a/b/model)加載模型類並添加註釋類。getClass()。getResource + Tomcat + Hibernate
現在,我被要求更改c3p0並改用Tomcat JDBC連接池。我跟着幾篇文章,顯然一切正常。現在的問題是,我在嘗試加載模型類並配置hibernate時遇到錯誤。
配置hibernate(HibernateConnector.class)的類位於webapps \ MyApp \ WEB-INF \ lib \ MyJar.jar中的jar(MyJar)中。
如果我做的getClass()的getResource( 「HibernateConnector.class」)我得到正確的路徑: JAR:文件:/ C:/apache-tomcat-7.0.29/webapps/MyApp/WEB-INF/ lib/MyJar.jar!/a/b/c/HibernateConnector.class
因爲當我詢問getClass()。getResource(/ a/b/model)時,我刪除了c3p0並配置了Tomcat連接池,所以我得到file: /C:/apache-tomcat-7.0.29/work/Catalina/localhost/MyApp/loader/a/b/model
我沒有碰到關於加載的任何代碼,所以顯然有些奇怪的事情正在發生新的配置。有沒有人有如何解決這個問題的想法?爲什麼這條道路正在改變工作/卡塔利娜....?
對不起,長期發帖,並感謝提前!
下面是我使用Tomcat連接池所做的更改。 在web.xml中我補充:
<resource-ref>
<description>This is a MySQL database connection</description>
<res-ref-name>jdbc/myDb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
的context.xml:
<Context antiJARLocking="true" path="MyApp">
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="30" maxIdle="10" maxWait="10000" name="jdbc/myDb" password="pass"
type="javax.sql.DataSource" url="jdbc:mysql://localhost/myDb" username="user"/>
</Context>
和配置Hibernate的編程方式:
props.put("hibernate.connection.datasource", "java:comp/env/jdbc/myDb");
props.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");