如何使用多个jar文件打包和准备EJB模块?

时间:2018-12-15 14:06:44

标签: java maven java-ee ejb

我正在尝试创建将支持ejb bean模块化的Maven(ear)项目。我的意思是,buissnes对象应放在单独的jar文件中。像这样:

application.ear
|__ users.jar 
|__ cars.jar
|__ phones.jar
|__ application-ejb.ejb
|__ application-web.war  

每个jar都包含为战争提供数据的Entities,Facade和Service

users.jar
|__ User.class (@Entitiy)
|__ UserService.class (@Named, @RequestScoped)
|__ UserFacadeLocal.class (@Stateless, @Local, @PersistenceContext) 

phones.jar
|__ Phone.class (@Entitiy)
|__ PhoneService.class (@Named, @RequestScoped)
|__ PhoneFacadeLocal.class (@Stateless, @Local, @PersistenceContext)

cars.jar
|__ Car.class (@Entitiy)
|__ CarService.class (@Named, @RequestScoped)
|__ CarFacadeLocal.class (@Stateless, @Local, @PersistenceContext)

现在我的问题是在某个行家阶段如何将这3个罐子包装到一个ejb中? (如果有可能当然以及如何做到这一点?),结果我将得到类似的东西:

application-ejb.ejb
|__ User.class (@Entitiy)
|__ UserService.class (@Named, @RequestScoped)
|__ UserFacadeLocal.class (@Stateless, @Local, @PersistenceContext)     
|__ Phone.class (@Entitiy)
|__ PhoneService.class (@Named, @RequestScoped)
|__ PhoneFacadeLocal.class (@Stateless, @Local, @PersistenceContext) 
|__ Car.class (@Entitiy)
|__ CarService.class (@Named, @RequestScoped)
|__ CarFacadeLocal.class (@Stateless, @Local, @PersistenceContext)

或在maven中仅使用依赖项有一些不同的方式

    <dependency>
        <groupId>org.application</groupId>
        <artifactId>application-ejb</artifactId>
        <version>1.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.users</groupId>
        <artifactId>users</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>org.cars</groupId>
        <artifactId>cars</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>org.phones</groupId>
        <artifactId>phones</artifactId>
        <version>1.0</version>
    </dependency>

有人可以帮助我解决问题吗?我将不胜感激

1 个答案:

答案 0 :(得分:0)

您可以使用Maven EAR插件的 defaultLibBundleDir 配置将这些JAR放入EAR的/ lib目录中,从而实现“ Skinny WARs ”的概念:< / p>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-ear-plugin</artifactId>
    <version>2.x</version>
    <configuration>
        <defaultLibBundleDir>lib</defaultLibBundleDir>

查看以下文章以了解更多详细信息: Creating Skinny WARs