8

Hibernateを使用するマルチモジュールMavenWebアプリケーションがあります。

Mavenの組み込みTomcatサーバーで実行するために、tomcat:runゴールを使用します。これまでのところ、すべて正常に動作しています。

しかし、ここで、hibernate.propertiesの明示的なjdbc構成からデータソースに切り替える必要があります。私は次のことをしました:

  • hibernate.propertiesを変更しました

から

hibernate.connection.driver_class=oracle.jdbc.OracleDriver
hibernate.connection.url=jdbc:somejdbcurl
hibernate.connection.username=aUser
hibernate.connection.password=aPassword

hibernate.connection.datasource=java:comp/env/jdbc/datasourcename
  • web.xmlに追加しました
<resource-ref>
    <res-ref-name>jdbc/datasourcename</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
  • 次のコンテンツを含むcontext.xmlをweb.xmlの横に追加しました。
<Context>
  <Resource name="jdbc/datasourcename"
         auth="Container"
         type="javax.sql.DataSource"
         username="aUser" password="aPassword"
         driverClassName="oracle.jdbc.OracleDriver"
         url="jdbc:somejdbcurl"
         maxActive="2" maxIdle="2"/>
</Context>

Oracle jdbcドライバーを含むjarファイルを提供する方法が見つからなかったため、これは機能しません。これは予想どおりです。ClassNotFound例外などを予期していましたが、代わりに

org.hibernate.exception.GenericJDBCException: Cannot open connection

スタックに根本原因があります:

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

Soooooo質問は次のとおりです。

  • tomcatがOracleドライバーを使用したいことを知らないのはなぜですか?
  • ドライバを含むjarファイルについてTomcatに通知するにはどうすればよいですか?
4

1 に答える 1

12

プラグイン宣言内にJDBCドライバーを追加する必要があります。

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>tomcat-maven-plugin</artifactId>
  <version>1.0</version>
  <configuration>
    ...
  </configuration>
  <dependencies>
    <dependency>
      <groupId>...</groupId>
      <artifactId>...</artifactId>
      <version>...</version>
    </dependency>
  </dependencies>
</plugin>

ちなみに、のデフォルト値はcontextFileですsrc/main/webapp/META-INF/context.xml

于 2010-07-20T13:25:23.210 に答える