これは奇妙な問題です。 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を拡張する予定だからです。
ありがとうございました。
@Marquinio:おそらくこれが問題です。 http://social.msdn.microsoft.com/forums/en/sqldataaccess/thread/28c1bf87-694a-4520-93d2-51d961f50e35 – shinynewbike
も参照してください。私のjarファイルはTOMCAT/common/libにあります。しかし、変わった部分は、上記のコードをfactory = "org.apache.naming.factory.BeanFactory"と共にtype = "com.mchange.v2.c3p0.ComboPooledDataSource"に変更し、他のすべてのものを同じままにしておけば、できます。 – Marquinio