【问题标题】:Java MDB EJB Project maven depends on Web ProjectJava MDB EJB 项目 maven 依赖于 Web 项目
【发布时间】:2015-03-17 22:31:01
【问题描述】:

我有一个现有的网络项目。现在我需要添加一个 MDB EJB 项目并做了同样的事情。 EJB项目maven依赖web项目

所以到目前为止一切都很好。当我开始在我的 MDB 中使用 web 项目中的一些类时,它编译得很好,一切看起来都很好但是在运行时使用 NoClassDefFoundError 炸弹

我去了我的 web pom.xml 并在配置部分中添加了这个

 <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <configuration>
                <attachClasses>true</attachClasses>

在我的 EJB POM 中

<dependency>
        <groupId>my.group</groupId>
        <artifactId>my-web-project-name</artifactId>
        <version>${project.version}</version>
        <classifier>classes</classifier>
    </dependency>

如何让我的 EJB 找到 web 项目中的类

我真的不能这样做,因为我不允许编辑网络项目。请帮忙!!!

【问题讨论】:

    标签: java eclipse maven dependencies ejb


    【解决方案1】:

    基本上默认情况下所有服务器都使用模块类加载器,并且 web 模块可能依赖于 ejb,但不是其他方式。绝对不推荐。您有以下选择:

    • 如果您使用的是符合 Java EE 6 的服务器,则可以将 EJB 直接添加到 Web 模块(需要在 Web 项目中进行更改)
    • 从 web 项目中提取公共类并创建 java 实用程序项目。将该项目添加到EAR,并使web和ejb项目依赖于它,web依赖于ejb(也需要在web中进行更改)
    • 为您的整个应用程序配置单个类加载器。如果您的服务器允许这样做,这应该可以解决您的问题。

    总而言之,我宁愿推荐编辑 web 项目并使用两个第一个解决方案之一,但如果你真的不能,那么第三个解决方案应该可以工作。

    【讨论】:

    • 根据您的评论,我尝试将 EJB 直接添加到我的 Web 应用程序中。是否需要在我的 web.xml 中指定一些内容,因为我看到部署时 EJB 被忽略了
    • @Shiv 确保您的 application.xml 是版本 6(如果有的话)并且 web.xml 是版本 3。默认情况下,maven 会生成过时的部署描述符。你如何定义你的 EJB - 通过注解或 ejb-jar.xml?
    猜你喜欢
    • 2012-10-22
    • 2016-01-13
    • 2014-05-25
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    相关资源
    最近更新 更多