我正在使用maven来构建应用程序。
我在应用服务器中部署了一个包含许多常见jar的WAR文件作为共享库。
我有一个包装类型EJB的工件(比如说A-EJB)。我已经构建了ejb jar文件。
我有另一个包装类型为EAR的工件(比如A-EAR)。
我在A-EAR的pom文件中添加了A-EJB依赖项。我可以构建EAR文件并添加共享库引用,我在EAR的weblogic-application.xml中添加了库引用。
在我的最终EAR文件中,我可以看到A-EJB.jar文件,A-EAR工件的其他依赖jar文件。
EAR结构:
-------------- APP-INF \ lib \ some jars
-------------- META-INF \ application.xml,MANIFEST.MF,weblogic-application.xml
-------------- A-ejb.jar
A-EJB.jar的类文件需要引用共享库中的公共jar。
理想情况下,我希望部署应该成功发生但不会发生这种情况。尽管我在EAR文件中有共享库引用,但在部署期间准备EJB模块时,部署由于classNotFoundException而失败。
A-EJB.jar的类文件搜索所需的jar文件以供参考,但它们在共享库中可用,并且即使EAR文件具有对它的引用,也不使用共享库。
例外:
weblogic.application.ModuleException:异常准备模块:EJBModule [EJB:011023]读取部署描述符时发生错误。错误是: .................................................. .........
引起者:java.lang.ClassNotFoundException: .................................................. ..........
因此,这意味着即使EAR具有共享库引用,EAR中存在的ejb.jar也没有引用共享库。这是真的吗?
是否有人遇到此异常和情况。请帮我解决这个问题。
答案 0 :(得分:0)
我建议你使用这个设置的耳塞..可能有帮助..
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<modules>
<ejbModule>
<groupId>ur ejb</groupId>
<artifactId>ur ejb Id</artifactId>
</ejbModule>
<jarModule>
<groupId>......</groupId>
<artifactId>......</artifactId>
</jarModule>
....
....
Other jar modules to be included other than the one included in dependency tag
....
....
</modules>
<archive>
<manifest>
<addClasspath>false</addClasspath>
</manifest>
</archive>
<displayName>...name...</displayName>
<description>........desc.......</description>
</configuration>
</plugin>