0

我正在使用 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 也没有对共享库的引用。这是真的 ?

有没有人遇到过这种异常和情况。请帮助我解决这个问题。

4

1 回答 1

0

我建议您使用带有此设置的 ear 插件.. 可能会有所帮助..

<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>
于 2012-06-21T12:30:15.627 回答