Миграция на JBoss7.2eap с jboss5.1.2eap: java.lang.NoClassDefFoundError: Lorg/apache/commons/dbcp/BasicDataSource

Я перенес свое приложение с jboss5.1.2-eap на jboss-7.2-eap и с java6 на java8, но после миграции оно начинает выдавать мне исключение при запуске сервера.

Вызвано: java.lang.NoClassDefFoundError: Lorg/apache/commons/dbcp/BasicDataSource

у нас есть файл datasource.xml, присутствующий в пути к классам сервера, со следующей строкой кода.

<bean id="beanName" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
    <property name="maxActive" value="10"/>

Также у нас есть commons-dbcp-1.2.2.jar в пути к классам, но он не работает для jboss-7.2-eap.

Теперь я не уверен, поддерживается ли commons-dbcp-1.2.2.jar jboss7-eap. поскольку он присутствует в пути к классам приложения (присутствует в загруженном модуле), но все же Spring не может создать bean-компонент для источника данных.


person Vicky    schedule 12.04.2019    source источник


Ответы (2)


Я предполагаю, что источник данных в Jboss EAP должен быть помещен в файл конфигурации standalone.xml и выглядит следующим образом:

<datasource jndi-name="java:jboss/datasources/Altis" pool-name="Altis" enabled="true">
  <connection-url>jdbc:oracle:thin:@255.255.255.255:1521:sid</connection-url>
  <driver-class>oracle.jdbc.OracleDriver</driver-class>
  <driver>oracle</driver>
  <security>
    <user-name>username</user-name>
    <password>passwd</password>
  </security>
</datasource>
person Олег Гаврилів    schedule 12.04.2019
comment
Я предоставил информацию о модуле и драйвере в файле standalone.xml, и теперь он начал выдавать мне описание ошибки: {WFLYCTL0412: необходимые службы, которые не установлены: => [jboss.jdbc-driver.com_oracle, jboss.jdbc-driver.com_oracle] , WFLYCTL0180: Службы с отсутствующими/недоступными зависимостями => [ org.wildfly.data-source.Altis отсутствует [jboss.jdbc-driver.com_oracle], jboss.driver-demander.java:jboss/datasources/Altis отсутствует [jboss .jdbc-driver.com_oracle], org.wildfly.data-source.Altis отсутствует [jboss.jdbc-driver.com_oracle]] - person Vicky; 12.04.2019
comment
добавьте драйвер оракула в jboss, например, как здесь: resolvethis.com/jboss-database-driver - person Олег Гаврилів; 12.04.2019
comment
Я уже следовал тому же самому, но получил эту проблему. Я не уверен, что ojdbc6-11.2.0.3.jar совместим с jdk8. так как мы использовали ту же банку для jdk6 ранее с jboss5. - person Vicky; 15.04.2019
comment
Я думаю, что проблема связана с совместимостью commons-dbcp-1.2.2.jar с jboss 7 eap, так как я загрузил эту банку в путь к классам, а также мы используем Spring для создания bean-компонента источника данных. поэтому поиск jndi не должен быть решением проблемы. Что вы говорите? - person Vicky; 16.04.2019

Данная информация о модуле находится в jboss-deployment-structure.xml внутри каталога WEB-INF файла war.

<jboss-deployment-structure>  
  <deployment>  
    <dependencies>  
     <module name="com.oracle.sql" export="true"/>
     <module name="org.apache.commons.dbcp" export="true"/>       
     </dependencies>  
   </deployment>  
</jboss-deployment-structure>

Кроме того, каталоги модулей также должны следовать тому же соглашению об именах в соответствии с доступностью ваших файлов .class внутри jar, например, в моем случае я создал модуль org.apache.commons.dbcp, поскольку при открытии файла commons-dbcp-1.2.2.jar файлы .class присутствуют внутри папки org/apache/commons/dbcp.

Примечание. В случае нескольких модулей вам необходимо определить их зависимость, если модуль зависит от другого, и эта информация будет предоставлена ​​внутри module.xml файла. как

 <module xmlns="urn:jboss:module:1.1" name="org.apache.commons.dbcp">  
   <resources>  
       <resource-root path="commons-dbcp-1.2.2.jar"/>
   </resources>  
   <dependencies>
      <module name="org.apache.commons.pool"/>
      <module name="com.oracle.jdbc.driver"/>
   </dependencies>
 </module>
person Vicky    schedule 22.04.2019