在战争和耳内罐子之间进行沟通

时间:2013-02-16 10:21:11

标签: java java-ee maven

我是在战争和罐子之间创造耳朵和沟通的新手......

我有两场战争具有完全独立的功能。 现在我要创建一个Ear,其中两个应用程序必须在相同的功能上工作, 它被封装在一个罐子里。但是要求是我不能在两者的Pom.xml中包含jar但是要使用那个罐子,其中所有3个都在单耳下。这是可能的吗?       我已经用2次独立战争测试了耳朵,它现在正常工作如何实现上述我没有得到这个         我正在使用Maven和Jboss7.1.1     我浏览了MessageHandler in JAR/WAR/EARhttps://stackoverflow.com/questions/1796255/tell-me-a-clear-differnece-between-ear-war-and-jar之类的链接,但对上述问题一无所知。

2 个答案:

答案 0 :(得分:0)

您可以将多个战争和罐子放入耳朵,他们可以共享同一个类加载器。这意味着可以从所有的罐子/战争中访问所有类别。也就是说,如果没有子包装,所有类/资源都在一个存档中。

我认为这就是“战争与罐子之间的沟通”的意思。

编辑:检查Making an EAR with Maven以获取用于构建耳朵的pom.xml示例。在这个例子中,有一个罐子和一个战争,但你可以有任意数量的战争/罐子。

答案 1 :(得分:0)

Hi got the solution >> here it is.. this is a pom.xml of ear project


<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>Test</groupId>
  <artifactId>Test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>ear</packaging> 

<dependencies>
    <!--Dependency for jar-->
    <dependency>
        <groupId>com.jar</groupId>
        <artifactId>com.jar</artifactId>
        <version>1.0</version>
        <type>war</type>
    </dependency>
    <!--Dependency for war1-->
    <dependency>
        <groupId>com.war2</groupId>
        <artifactId>com.war2</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>war</type>
    </dependency>       
    <!--Dependency for war2-->  
    <dependency>
        <groupId>com.war1</groupId>
        <artifactId>com.war1</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>war</type>
    </dependency>
</dependencies>

<build>
    <finalName>Project</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.8</version>
            <configuration>
                <finalName>MyEarFile</finalName>
                <version>5</version>
                <modules>
                    <!--Webmodule for war1-->
                    <webModule>
                        <groupId>com.war1</groupId>
                        <artifactId>com.war1</artifactId>
                        <uri>war1.war</uri>
                        <bundleFileName>war1.war</bundleFileName>
                    </webModule>

                    <!--Webmodule for war2-->
                    <webModule>
                        <groupId>com.war2</groupId>
                        <artifactId>com.war2</artifactId>
                        <uri>war2.war</uri>
                        <bundleFileName>war2.war</bundleFileName>
                    </webModule>
                </modules>
            </configuration>
        </plugin>
    </plugins>
  </build>
</project>




Note:: groupId and artifactId metioned here must match with groupId and artifactId mentioned in the project's pom.xml.
Also dependency of jar must be present in this i.e. ear's pom.xml and not in both app's pom.xml.
At time of maven install it automatically refers to jar's contents..