Ресурс JNDI Tomcat - класс не найден: oracle.jdbc.xa.client.OracleXADataSource - PullRequest
2 голосов
/ 24 июня 2011

Проблема

Каждый раз, когда я запускаю свой сервер 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" /> 

В моем приложении я использую драйвер JDBC от Oracle - classes12.jar

Вопрос

Что мне нужно исправить на сервере Tomcat, чтобы он мог найти соответствующий класс - oracle.jdbc.xa.client.OracleXADataSource.Мое первое предположение было бы, что classes12.jar должен быть скопирован в папку где-нибудь на сервере.Я даже не совсем уверен, где папка на Windows для Eclipse ... любая помощь будет оценена.

Спасибо!

Ответы [ 5 ]

5 голосов
/ 24 июня 2011

Предполагается, что Tomcat 6, необходимую библиотеку необходимо скопировать в $CATALINA_HOME\lib.

Из документации Tomcat по настройке источников данных JDBC :

1. Установите драйвер JDBC

Использование источников данных JDBC JNDI Resource Factory требует, чтобы вы сделать соответствующий драйвер JDBC доступно как внутреннему Tomcat классы и для вашего веб-приложения. Это легче всего сделать установка файлов JAR драйвера в каталог $ CATALINA_HOME / lib, что делает драйвер доступным как на фабрику ресурсов и на ваш применение.

Кроме того, я бы не стал использовать classes12.zip. Он предназначен для использования только в средах исполнения Java 1.2 и 1.3. Используйте ojdbc14.jar, если вы застряли в Java 1.4. Или используйте рекомендуемый ojdbc6.jar / ojdbc5.jar для сред Java 6 или Java 5.

2 голосов
/ 24 июня 2011

Самое простое исправление, предполагая, что OracleXADataSource является классом в classes12.jar, - это скопировать этот JAR в каталог lib Tomcat .

  • Tomcat 5: $CATALINA_HOME/common/lib
  • Tomcat 6: $CATALINA_HOME/lib
1 голос
/ 24 июня 2011

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

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

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

0 голосов
/ 24 июня 2011

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

0 голосов
/ 24 июня 2011

С документация :

Драйверы для более старых версий Oracle могут скорее распространяться как * .zip файлы чем * .jar файлы. Tomcat будет использовать только * .jar файлы установлены в $ CATALINA_HOME / lib

Так что да, вы должны поместить банку в $ CATALINA_HOME / lib

...