问题
我通过Eclipse启动Tomcat服务器的时候总是得到 Class not found 错误:
SEVERE: Exception processing Global JNDI Resources
javax.naming.NamingException: Class not found: oracle.jdbc.xa.client.OracleXADataSource
at org.apache.naming.factory.BeanFactory.getObjectInstance(BeanFactory.java:136)
设置
我的 server.xml 文件的资源设置如下:
<GlobalNamingResources>
<Resource name="sub1" auth="Container"
type="oracle.jdbc.xa.client.OracleXADataSource"
factory="org.apache.naming.factory.BeanFactory"
user="****" password="*****"
URL="**************************************" />
</GlobalNamingResources>
context.xml 的条目如下:
<ResourceLink name="dataSource/sub1" global="sub1" type="javax.sql.DataSource" />
在我的应用程序中,我使用的是Oracle的JDBC驱动程序 - classes12.jar
问题
我需要在Tomcat服务器上修复什么才能找到合适的类 - oracle.jdbc.xa.client.OracleXADataSource
。我的第一个猜测是 classes12.jar 需要复制到服务器上的某个文件夹中。我甚至不确定Windows for Eclipse上的文件夹在哪里...任何帮助都将不胜感激。
谢谢!
答案 0 :(得分:5)
假设Tomcat 6,需要将所需的库复制到$CATALINA_HOME\lib
。
来自Tomcat documentation on setting up JDBC DataSources:
<强> 1。安装JDBC驱动程序
使用JDBC数据源JNDI 资源工厂要求你 制作合适的JDBC驱动程序 Tomcat内部可用 类和Web应用程序。 这最容易实现 安装驱动程序的JAR文件 进入$ CATALINA_HOME / lib目录, 这使得驱动程序都可用 到资源工厂和你的 应用
另外,我会避免使用classes12.zip
。它仅用于Java 1.2和1.3运行时环境。如果您遇到Java 1.4,请使用ojdbc14.jar
。或者对Java 6或Java 5环境使用推荐的ojdbc6.jar
/ ojdbc5.jar
。
答案 1 :(得分:2)
假设OracleXADataSource
是classes12.jar
中的一个类,最简单的解决方法是将该JAR复制到Tomcat's lib directory。
$CATALINA_HOME/common/lib
$CATALINA_HOME/lib
答案 2 :(得分:1)
不是class12.jar;这是JDK 1.2年份。您的Oracle JDBC驱动程序JAR应该与您的JDK和Oracle版本匹配(例如,对于JDK 1.6,ojdbc16.jar)。
将它放在Tomcat版本5.x的Tomcat / server / lib和Tomcat版本6.x及更高版本的/ lib中。
我还建议不要更改server.xml文件。最好将这些信息放在项目的META-INF / context.xml文件中。
答案 3 :(得分:0)
旧版Oracle的驱动程序可能 作为* .zip文件分发而不是 比* .jar文件。 Tomcat只会使用 * .jar文件安装在$ CATALINA_HOME / lib
中
所以是的,你必须把jar放在$ CATALINA_HOME / lib
中答案 4 :(得分:0)
将classes12.jar复制到tomcat的/ common / lib目录中。