views:

33

answers:

1

The presentation tier will contain 2 web modules (serving different purposes and based on different technologies), the middle tier will be Spring beans without EJBs and the persistence tier will be JPA on Hibernate. I am wondering what would be the best project setup in this case. The IDE I am planning to use is MyEclipse 8.5. Thanks.

+2  A: 

One Java project for the common stuff that's packaged as a JAR file.

Two web projects, each packaged in their own WAR file, that accept the common JAR file as a 3rd party dependency.

Do I need an EAR?

You can do that if you're using a Java EE app server like WebLogic, JBOSS, Glassfish, Geronimo, or WebSphere. An EAR won't be an option if you're using a servlet/JSP engine like Tomcat or Jetty to deploy.

Or just 3 separate projects?

Three projects will have the advantage of looser coupling. Your two web apps are coupled at the common JAR and database levels, but from a deployment point of view you can alter the rest for one and not affect the other.

What can be put into the common JAR? What I can think of is JPA entities, DAOs.

Everything that's shared except for the web tier stuff.

What if 2 WARs try to access the same data at the same time?

That has to do with isolation, table locking, and the design of the application.

duffymo
Thanks for the prompt response. Do I need an EAR? Or just 3 separate projects? What can be put into the common JAR? What I can think of is JPA entities, DAOs. What if 2 WARs try to access the same data at the same time?
Tong Wang
@Tong Wang - +1 I would package the whole thing in an EAR if you are running on a platform that supports them.
Romain Hippeau