我的代码是对的吗? 在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没有工作。
答案 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)
参阅白皮书。这里有Tomcat的通用连接池(UCP)。 http://www.oracle.com/technetwork/database/application-development/planned-unplanned-rlb-ucp-tomcat-2265175.pdf