Tomcat JNDI资源 - 找不到类:oracle.jdbc.xa.client.OracleXADataSource

时间:2011-06-24 18:57:17

标签: java eclipse tomcat jndi

问题

我通过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上的文件夹在哪里...任何帮助都将不胜感激。

谢谢!

5 个答案:

答案 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)

假设OracleXADataSourceclasses12.jar中的一个类,最简单的解决方法是将该JAR复制到Tomcat's lib directory

  • Tomcat 5:$CATALINA_HOME/common/lib
  • Tomcat 6:$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)

来自the documentation

  

旧版Oracle的驱动程序可能   作为* .zip文件分发而不是   比* .jar文件。 Tomcat只会使用   * .jar文件安装在$ CATALINA_HOME / lib

所以是的,你必须把jar放在$ CATALINA_HOME / lib

答案 4 :(得分:0)

将classes12.jar复制到tomcat的/ common / lib目录中。