Миграция в 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
файл присутствует в classpath сервера, имея следующую строку кода.
<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
присутствует в classpath, но он не работает для jboss-7.2-eap
,
Теперь я не уверен, если commons-dbcp-1.2.2.jar
поддерживается jboss7-eap
, так как он присутствует в пути к классам приложения (присутствует в загруженном модуле), но все еще Spring не может создать компонент для источника данных.
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>
Данная информация модуля в 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>