【问题标题】:How Two different Maven Web project can share same EJB两个不同的 Maven Web 项目如何共享相同的 EJB
【发布时间】:2012-11-02 13:36:23
【问题描述】:
我有两个不同的基于 Maven 的 JSF Web 项目(Netbeans 和 Glassfish),一个用于管理员用户,另一个用于普通用户。我想让它们分开,因为这样更简单。实体类将是相同的,我希望这两个战争项目共享这些实体类。
这样做的最佳方法是什么?我不希望用户和管理员共享相同的 UI,因为它变得太复杂了。我想让他们的用户界面分开,这对我来说更容易和清晰。
非常感谢
【问题讨论】:
标签:
jsf
jakarta-ee
maven
glassfish
ejb
【解决方案1】:
我建议您将两个项目分成至少 4 个 maven 项目:
- common-ejb:maven 项目类型“EJB”,保留所有 EJB/实体
- customer-web:maven 项目类型“WAR”,为普通用户保留所有 UI,依赖于“common-ejb”
- admin-web:maven 项目类型 'WAR',保留所有 UI 供管理员用户使用,依赖于 'common-ejb'
- common-ear:maven 项目类型“EAR”,包括“common-ejb”作为 EJB 依赖项,并包含 2 个 Web 项目 (WAR)。
EAR pom.xml 可能如下所示:
<groupId>com.example</groupId>
<artifactId>example-ear</artifactId>
<version>1.0</version>
<packaging>ear</packaging>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>example-ejb</artifactId>
<version>${project.parent.version}</version>
<type>ejb</type>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>customer-web</artifactId>
<version>${project.parent.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>admin-web</artifactId>
<version>${project.parent.version}</version>
<type>war</type>
</dependency>
<dependencies>
如果您需要对上下文根或库部署进行一些自定义,请查看 maven-ear-plugin 文档。