2012-08-24 34 views
0

我有一個使用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"); 

回答

0

經歷了大量的資源有關的類加載器後和方式tomcat加載一切,我找不到對我的問題特別有用的任何東西(儘管我在這方面學到了很多東西)。

無論如何,我開始瀏覽Tomcat關於我在上面的問題中列出的每個Web應用程序上下文XML文件的文檔。

我將antiJARLocking = true切換爲antiResourceLocking = true,認爲有東西被鎖定,我需要更多的防範措施。使用該設置,我可以運行我的應用程序。但antiResourceLocking在啓動時會產生嚴重的負面影響,所以試試我刪除了屬性(默認爲false),這也起作用了! :-D。

我的context.xml收盤看起來像這樣:

<Context 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> 

希望這可以幫助別人的未來。

相關問題