2011-06-24 3 views
2

ПроблемаTomcat JNDI ресурсов - Класс не найден: oracle.jdbc.xa.client.OracleXADataSource

В любое время я начинаю свой сервер Tomcat через Eclipse, я всегда получаю класс не найден ошибка:

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. Используйте ojdbc14.jar, если вы застряли в Java 1.4. Или используйте рекомендованные ojdbc6.jar/ojdbc5.jar для сред Java 6 или Java 5.

2

Самое простое исправить, считая, что OracleXADataSource является классом в classes12.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

Скопируйте классы12.jar в каталог tomcat/common/lib.

1

Не classes12.jar; это JDK 1.2 vintage. Ваш JAR драйвер JAR JAR должен соответствовать вашим версиям JDK и Oracle (например, ojdbc16.jar для JDK 1.6).

Поместите это в свой Tomcat/server/lib для Tomcat версии 5.x и/lib для Tomcat версии 6.x и выше.

Я также рекомендую не изменять файл server.xml. Лучше поместить эту информацию в файл META-INF/context.xml вашего проекта.

+0

+2, если бы я мог это сделать ... ваши дополнительные советы были очень полезными. –

+0

Теперь мне больше не нужен ответ на мой вопрос, потому что мне не нужно зависеть от сервера. Еще раз спасибо ... Я чувствую себя освобожденным. –

+0

Я рад помочь. Спасибо, что дали мне знать. Удачи. – duffymo

Смежные вопросы