2011-06-24 53 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