Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有ejb和war模块的Maven ear项目_Java_Maven_Jakarta Ee_Jboss - Fatal编程技术网

Java 带有ejb和war模块的Maven ear项目

Java 带有ejb和war模块的Maven ear项目,java,maven,jakarta-ee,jboss,Java,Maven,Jakarta Ee,Jboss,我正在使用maven和Jboss 7开发一个web应用程序,它包含3个模块EJBEAR和war,因此war将把ejb作为依赖项,ejb将同时作为ear的一个模块,所以当我这样做时,我得到的相同ejb是这棵树的两倍 ear ...Mywar ........Myejb ...Myejb 这个结构正确吗?还是我应该换一个 用于战争的pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:

我正在使用maven和Jboss 7开发一个web应用程序,它包含3个模块EJBEAR和war,因此war将把ejb作为依赖项,ejb将同时作为ear的一个模块,所以当我这样做时,我得到的相同ejb是这棵树的两倍

ear
...Mywar
........Myejb
...Myejb
这个结构正确吗?还是我应该换一个

用于战争的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>
  <groupId>tn.war.ep</groupId>
  <artifactId>businessModule</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>  
     .....
     <dependency>
    <groupId>tn.linckia.epgp</groupId>
    <artifactId>ejbModule</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <type>ejb</type>
    </dependency>
  </dependencies>
</project>

4.0.0
tn.war.ep
业务模块
0.0.1-快照
战争
.....
tn.linckia.epgp
EJB模块
0.0.1-快照
ejb
ear的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>
  <groupId>tn.war.ep</groupId>
  <artifactId>earModule</artifactId>
  <version>0.0.1</version>
  <packaging>ear</packaging>

  <build>
  <plugins>

    <plugin>
      <artifactId>maven-resources-plugin</artifactId>
      <version>2.4</version>
      <configuration>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
    </plugin>

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ear-plugin</artifactId>
        <version>2.6</version>
        <configuration>
        <modules>
          <webModule>
            <groupId>tn.war.ep</groupId>
            <artifactId>businessModule</artifactId>
            <bundleFileName>businessModule.war</bundleFileName>
            <contextRoot>/businessModule</contextRoot>
          </webModule>
          <ejbModule>
            <groupId>tn.war.ep</groupId>
            <artifactId>ejbModule</artifactId>
           <bundleFileName>ejbModule.jar</bundleFileName>
          </ejbModule>
        </modules>
        <displayName>Security</displayName>
      </configuration>
    </plugin>
  </plugins>
  <finalName>AuthModule</finalName>
</build>
  <dependencies>
  <dependency>
    <groupId>tn.war.ep</groupId>
    <artifactId>businessModule</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <type>war</type>
  </dependency>
<dependency>
            <groupId>tn.war.ep</groupId>
            <artifactId>ejbModule</artifactId>
           <version>0.0.1-SNAPSHOT</version>
          <type>ejb</type>
          </dependency>
  </dependencies>

</project>

4.0.0
tn.war.ep
耳模块
0.0.1
耳朵
maven资源插件
2.4
UTF-8
org.apache.maven.plugins
maven编译器插件
3.1
org.apache.maven.plugins
maven耳朵插件
2.6
tn.war.ep
业务模块
businessModule.war
/业务模块
tn.war.ep
EJB模块
ejbModule.jar
安全
AuthModule
tn.war.ep
业务模块
0.0.1-快照
战争
tn.war.ep
EJB模块
0.0.1-快照
ejb
选项:#1

你甚至不需要耳朵。 您可以将所有EJB作为JAR放在战争中。 只需将EJB项目作为依赖项添加到War项目中

选项:#2


如果你还想听的话。所有EJB项目输出都应该是JAR。web项目输出应该是war。最后,这些EJB JAR和web war将放在一个耳朵中。这是一种老式的方式,为了保持简单,您可以遵循我在选项1中解释的方法。

我遇到了这个问题,在ejb模块pom.xml中将ejb打包标记从ejb更改为jar解决了这个问题。不知道为什么

配置EAR模块的正确方法是让EJB jar依赖项在WAR模块中具有“提供的”作用域,并让EJB jar直接位于EAR之下,如下所示:

EAR
|
|-lib/someutil.jar
|-EJB.jar
|-my-web.war
|  |-WEB_INF/lib
|    |-coolutil.jar
|-EJB2.jar

但是my-web.war可以依赖于任何EJB.jar,但它在运行时由容器解决。因此,在WAR的pom.xml中将ejb依赖项标记为“提供”(由容器提供)。

我被要求在一个ear中交付所有模块,其中包含ejb模块和WAR模块。。。但我的问题是:在树上使用ejb两次是否正确?很好。不,你不应该吃两次。删除WAR项目中的EJB依赖项。那你就不会在战争中拥有它了。如果您在发布pom.xml后仍然有问题,我为ear和WART添加了pom.xml。我将如何在war中获得ejb依赖项的问题,因为我需要将ejb中的实体实例化到war中,它甚至不会编译,因为ejb打包与maven ear插件中的jar打包完全不同。