How Two different Maven Web project can share same EJB

ejb, glassfish, jakarta-ee, jsf, maven

Solution

I would suggest that you split both your projects into at least 4 maven projects:

- common-ejb: maven project type 'EJB', keep all of your EJB/Entities there

- customer-web: maven project type 'WAR', keep all your UI for the regular users, with dependency on 'common-ejb'

- admin-web: maven project type 'WAR', keep all your UI for the admin users, with dependency on 'common-ejb'

- common-ear: maven project type 'EAR', that includes 'common-ejb' as EJB dependency, and contains the 2 web projects (WAR).

The EAR pom.xml could look like:

<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>

and look at the `maven-ear-plugin` doc if you need some customization of context-root or library deployment.

Problem

I have two different Maven-Based JSF Web Projects (Netbeans and Glassfish) one for admin users and the other one is for regular users. I wanted to keep them separate because it is simpler this way. Entity classes will be the same and I want these two war projects share these entity classes. What is the best way of doing this? I don't want users and admins share the same UI because it gets too complicated I want to keep their user interfaces separate it is much easier and clear for me. Thanks a lot

Original source