无法使用Tomcat 5.5和Hibernate连接到数据库

时间:2010-12-08 02:48:47

标签: java hibernate tomcat jndi tomcat5.5

好的,我有这个奇怪的问题。我正在使用Tomcat 5.5和Hibernate。我已经在TOMCAT_HOME / conf / server.xml和我的应用程序的web.xml中添加了资源。
但是当我使用Hibernate构建会话工厂时,我遇到了错误:

 configure.buildSessionFactory()

但是我收到了这个错误:

[ WARN]21:04:29 (SettingsFactory.java:buildSettings:144) - Could not obtain connection metadata

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'

我的server.xml资源配置如下:

<Context path="/myApp" docBase="myApp" debug="0" reloadable="true" crossContext="true"> 
<Resource name="jdbc/myApp" auth="Container" type="javax.sql.DataSource" driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"  maxPoolSize="100"  minPoolSize="5"   
acquireIncrement="5"    
  user="username"  
password="1234"   
jdbcUrl="jdbc:sqlserver://192.168.1.108:1433;databaseName=myAppDB;autoReconnect=true" /> 
</Context>

我的web.xml是这样的:

    <resource-ref> 
    <description>DB Connection</description> 
    <res-ref-name>jdbc/myApp</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth> 
</resource-ref> 

这是我手动在Java代码中初始化的Hibernate属性:

hibernate.useJndi = "true"
hibernate.connection.datasource="java:/comp/env/jdbc/myApp"
hibernate.connection.jndi.datasource="jdbc/myApp"
hibernate.dialect="org.hibernate.dialect.SQLServerDialect"
hibernate.current_session_context_class="thread"

所以我的hibernate.cfg.xml基本上是空的,因为配置是用Java代码和JNDI完成的。

奇怪的是,如果我只修改server.xml和web.xml以使用type =“com.mchange.v2.c3p0.ComboPooledDataSource”以及factory =“org.apache.naming.factory.BeanFactory”并且让所有其他东西都一样,它可以工作!!!

为什么上述配置不起作用?我从Tomcat 5.5 JNDI教程中获取它。我需要使用它,因为在我完成上述工作后,我计划扩展org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory。

感谢。

1 个答案:

答案 0 :(得分:3)

您的数据库驱动程序JAR是否在TOMCAT / lib目录中?这取决于创建和管理数据库池的层。如果您确实移动了JAR,还要确保将其从WEB-INF / lib目录中删除。一个或另一个,而不是两者。