gpt4 book ai didi

maven-2 - 使用 Maven 在带有数据源的嵌入式 Tomcat 上进行部署

转载 作者:行者123 更新时间:2023-11-28 21:46:26 25 4
gpt4 key购买 nike

我有一个使用休眠的多模块 Maven Web 应用程序。

我使用 tomcat:run 目标是为了在 maven 的嵌入式 tomcat 服务器上运行它。到目前为止一切正常。

但现在我需要从 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>
  • 在 web.xml 旁边添加了一个 context.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 Exception 或类似的东西,但我得到了一个

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'

问题是:

  • 为什么 tomcat 不知道我要它使用 Oracle 驱动程序?
  • 如何将包含驱动程序的 jar 文件告知 tomcat?

最佳答案

您需要在插件声明中添加 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>

顺便说一句,默认值为contextFilesrc/main/webapp/META-INF/context.xml

关于maven-2 - 使用 Maven 在带有数据源的嵌入式 Tomcat 上进行部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3290155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com