我面临一个问题,如何使用 JBoss7 应用程序服务器的简单 WAR 和 EJB3 模块正确打包我的企业 (EAR) 应用程序。问题是,EJB 模块正在使用 XML-RPC 库(来自 Apache),但我仍然得到NoDefClassFound
(此 xmlrpc 库中的类)在 EAR 部署期间。
问题是,那个专家——ejb-插件确实not最终 EJB jar 中的包依赖项,但 Maven-ear-plugin 将其打包在 EAR 目录的根目录中。
当部署 EAR 时,在内部 EJB 模块上调用 INSTALL,但它找不到 xmlrpc lib 类(它不是用 EJB jar 打包的,而是用 EAR 打包的,并且在清单中没有任何条目)。
EJB pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cz.ctu.fee.voxport.app_logic</groupId>
<artifactId>core</artifactId>
<version>1.0</version>
<packaging>ejb</packaging>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-common</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-client</artifactId>
<version>3.1.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.3</version>
<configuration>
<ejbVersion>3.1</ejbVersion>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
有什么方法可以使用 Maven 干净地解决这个问题吗?
我设法解决了这个问题。看来这些库必须打包在 /lib 目录中,而不是 EAR 的根目录中。添加defaultLibBundleDir元素解决了这个问题。
E.g.:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.6</version>
<configuration>
<defaultLibBundleDir>lib</defaultLibBundleDir>
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)