2011-06-24 143 views
2

的问题Tomcat的JNDI资源 - 类未发现:oracle.jdbc.xa.client.OracleXADataSource

每当我开始通过Eclipse我的Tomcat服务器,我总是得到类找不到错误:

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的Eclipse上的文件夹......任何帮助,将不胜感激。

谢谢!

回答

5

假设Tomcat 6,所需的库需要被复制到$CATALINA_HOME\lib

Tomcat documentation on setting up JDBC DataSources

1. Install Your JDBC Driver

Use of the JDBC Data Sources JNDI Resource Factory requires that you make an appropriate JDBC driver available to both Tomcat internal classes and to your web application. This is most easily accomplished by installing the driver's JAR file(s) into the $CATALINA_HOME/lib directory, which makes the driver available both to the resource factory and to your application.

另外,我会避免使用classes12.zip。它仅用于Java 1.2和1.3运行时环境。如果您遇到Java 1.4,请使用ojdbc14.jar。或者使用推荐ojdbc6.jar/ojdbc5.jar针对Java 6或Java 5的环境中。

2

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

  • 的Tomcat 5:$CATALINA_HOME/common/lib
  • 的Tomcat 6:$CATALINA_HOME/lib
+0

这听起来像是一个很好的解决方案。我试图寻找Tomcat的根目录与MyEclipse 8.x –

0

the documentation

Drivers for older Oracle versions may be distributed as *.zip files rather than *.jar files. Tomcat will only use *.jar files installed in $CATALINA_HOME/lib

所以,是的,你必须把$ CATALINA_HOME /罐LIB

0

拷贝到Tomcat的/ common/lib目录的classes12.jar。

1

不classes12.jar;这是JDK 1.2年份。你的Oracle JDBC驱动程序JAR应该符合你的JDK和Oracle版本(例如ojdbc16.jar为JDK 1.6)。

将Tomcat版本5.x中的Tomcat/server/lib和Tomcat 6.x及更高版本中的/ lib放入。

我也建议不要改变你的server.xml文件。最好将这些信息放在项目的META-INF/context.xml文件中。

+0

+2如果我可以这样做......你的额外提示是非常有用的。 –

+0

现在我不再需要我的上述问题的答案了,因为我不需要依赖服务器。再次感谢......我感到解放了。 –

+0

我很乐意提供帮助。谢谢你让我知道。祝你好运。 – duffymo