我将简要说明情况。
我需要维护一个应用程序,并将其部署在Websphere上,该应用程序包含两个部分。演示和业务。 我已经成功地简化了仅包含战争的演示文稿部分,并且该部分现在已部署在Websphere上。 但是,自从2天开始部署业务部分以来,我现在遇到问题。事实是我在打包ejb-impl,ejb-client和ear时遇到麻烦。确实,当我尝试部署业务部分时,Websphere出现了一个例外,因为ejb-impl找不到接口而拒绝启动服务器
我正在尝试重现提取时在EAR中打包的可运行的非Mavenise开发架构:
- META-INF
- application.xml
- MANIFEST
- lib
- dom4j
- jaxen
- ODApi
- EJB3 (implementation)
- EJB3Client (interfaces)
- Common (needed module)
- ODemand (needed module)
如果我提取EJB,则具有以下层次结构:
- com
- META-INF
- ejb-jar
- ibm-ejb-jar-bnd
- EJB3Client (jar)
正如您所能做到的,正确地添加了EJB3Client jar。
现在,如果我提取自己无法正常工作的EAR,则结果如下:
- META-INF
- maven
- application
- MANIFEST
- EJB3 (jar)
- EBJ3Client (jar)
- Common (jar)
- ODemand (jar)
- ... (tons of libraries)
经过一些测试和分析,我认为问题来自此EJB(实现)模块... 确实,我已经尝试向项目添加war模块,没问题,战争的依赖关系没有添加到EAR的根目录中,但是如果我向EJB的依赖关系中添加了诸如Mockito的依赖关系,它也会出现在提取后取根。
这就是为什么我认为问题出在包装上,并且当我尝试在EJB模块中指定时,在部署程序集中将Maven依赖项添加到WEB-INF / lib中时,这是不可能的,因为如果我单击
DeploymentAssembly -> Add -> Java Build Path Entries
没有任何内容(没有maven依赖项)... 我对EJB一无所知,而且我对Maven还是陌生的,所以我问你们是否有成功实现此部署的想法。
要多提供一些东西(不能提供太多,我已经删除了私人信息):
EAR业务的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>
<packaging>ear</packaging>
<artifactId>BusinessEAR</artifactId>
<parent>
<artifactId>BusinessParent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<artifactId>EJB3</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>ejb</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<modules>
<ejbModule>
<artifactId>EJB</artifactId>
</ejbModule>
</modules>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>cp1252</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
EJB的pom.xml:
<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>
<artifactId>EJB3</artifactId>
<packaging>ejb</packaging>
<parent>
<artifactId>BusinessParent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<artifactId>EJB3Client</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>Common</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>ODemand</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.ejb</groupId>
<artifactId>ejb-api</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>javax.ejb</groupId>
<artifactId>javax.ejb-api</artifactId>
<version>3.2</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>ODApi</groupId>
<artifactId>ODApi</artifactId>
<version>1.5.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>cp1252</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.3</version>
<configuration>
<ejbVersion>3.1</ejbVersion>
</configuration>
</plugin>
</plugins>
</build>
</project>
我真的不能提供更多信息,因为该应用程序和源代码是私人抱歉。
最后,我尝试使用表示部分的层次结构成为ISO,但我仍然真的认为EJB部分是问题
预先感谢