2010-12-08 26 views
0

これは奇妙な問題です。 Tomcat 5.5とHibernateを使用しています。私はTOMCAT_HOME/conf/server.xmlと私のアプリケーションのweb.xmlにリソースを追加しました。
しかし、このようなセッションファクトリを構築するために休止状態を使用しているとき、私はエラーを取得しています:Tomcat 5.5と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がこのようなものです:

コンフィギュレーションは、JavaコードでとJNDIを介して行われますので、だから私のhibernate.cfg.xmlのは、基本的に空である

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" 

これは、私は手動で私のJavaコードで初期化していHibernateのプロパティです。

私は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を拡張する予定だからです。

ありがとうございました。

答えて

3

データベースドライバJARはTOMCAT/libディレクトリにありますか?どの層がDBプールを作成し管理しているかによって異なります。 JARを移動する場合は、必ずWEB-INF/libディレクトリから削除してください。どちらか一方、両方ではない。

+0

@Marquinio:おそらくこれが問題です。 http://social.msdn.microsoft.com/forums/en/sqldataaccess/thread/28c1bf87-694a-4520-93d2-51d961f50e35 – shinynewbike

+0

も参照してください。私のjarファイルはTOMCAT/common/libにあります。しかし、変わった部分は、上記のコードをfactory = "org.apache.naming.factory.BeanFactory"と共にtype = "com.mchange.v2.c3p0.ComboPooledDataSource"に変更し、他のすべてのものを同じままにしておけば、できます。 – Marquinio

関連する問題