我想知道如何将tomcat连接到oracle jdbc pool

时间:2015-05-28 07:19:03

标签: java oracle tomcat jdbc

我的代码是对的吗? 在context.xml中,我这样添加。也许driveClassName或url有什么问题?

<Resource  name="jdbcoracle"   auth="Container" type="javax.sql.DataSource"
 factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
maxActive="20"
maxIdle="1"
maxWait="100"
username="test"
password="test"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:8080/orcl"/>   

在tomcat和project中的web.xml中添加如下

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

但似乎仍然是

javax.servlet.ServletException: javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]

那我该怎么办?顺便说一句,我将我的tomcat端口号更改为8081,因为8080没有工作。

3 个答案:

答案 0 :(得分:0)

您错过了类路径中的tomcat-dbcp.jar。下载并将其添加到类路径中。

答案 1 :(得分:0)

根据the reference,这看起来不错,只有一个例外(如果您只是复制/粘贴了声明):

<Resource>声明中name="jdbcoracle" <resource-ref>使用jdbc/oracle时,请注意斜杠。

我在初步回答后8小时才看到这个:你声明数据库URL指向端口8080 - 这通常是一个管理界面(以及tomcat无法在此端口上运行的原因) Oracle的DB端口曾经是1521(除非你改了它)。

此外,请按照Jens在答案中的建议检查您的课程路径。

答案 2 :(得分:0)