我已经将我的应用程序从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。
答案 0 :(得分:0)
我想应该将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>
答案 1 :(得分:0)
在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>
此外,模块目录还应按照jar中.class文件的可用性遵循相同的命名约定,例如在我的情况下,我在打开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>