multiple WARs/EARs for a web application

Posted on 2010-08-18
Last Modified: 2013-12-02
I support a web application that consists of multiple modules. Each module is accessed via menu and modules may require to interact with each other to complete a particular transaction.
I want to understand if it is possibe and feasible to create a separate WAR file and treat each module as a stand alone web application. Then using some method make it possible for  modules (which are separate stand alone application) to talk to each other to complete the transaction.

If it is feasible, will there be any impact on the performance? Will the impact be significant?
Question by:javaCaravan0
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2

Author Comment

ID: 33477519
still waiting for the feedback
LVL 33

Expert Comment

ID: 33508272

You can split up the business logic in the way you describe. The separate modules can even be deployed to different servers.
However, the modules cannot share objects in this scenario. They will have to communicate by web services, either synchronous (via http) or asynchronous via queueing/messaging. This raises the questions of security, transaction integrity, governance and some more.  
Also, your deployment is likely to become much more complex.

Despite the shortcomings, this very well may be the way to go. Application componentization is what SOA is all about :)


Author Comment

ID: 33510097
Thanks for the reply.
Let me clarify what you have explained above:
1. The only way for diffrent modules (designed as a stand alone web application) to interact with each other is via Web Services.
2. can you please elaborate more about your comment on security, transaction integrity and governance. Does web services not provide good security?


Expert Comment

ID: 33608821
I believe if you use an EAR file, you can share the objects & classes between the WARs and other java resources without issues.  A little more information on EAR in general is here in the wikipedia article.  If you were wanting to share objects between EARs, I think that would be when you would have issues as described above. 
From what I understand, an EAR file with multiple WAR files within it should meet your needs.  There may be some performance hit from the general overhead of breaking out the application into a more distributed fashion (more XML to parse, extra classes getting everything loaded) but probably nothing significant and likely well worth it to get the separation that you're hoping to achieve.
LVL 33

Accepted Solution

shalomc earned 500 total points
ID: 33616932
forgot about this thread :)

> 1. The only way for diffrent modules (designed as a stand alone web application) to interact with each other is via Web Services.
Well, it is not the ONLY way, but probably the best and most cost effective way.

As for security, integrity and governance:
When all the business processes ran in a single CPU, you
a. had no security authorization problem because the interfaces were internal and you trust internal processes.
b. had no security data leakage problem because internal processes do not use the network to communicate.
c. had no integrity problem because internal processes are usually complete and it is difficult to inject anything foreign into them.
d. all internal processes tend to fail together, so you do not have to manage SLA for each and every one.

When you split business logic among different components,
a. the interface is external and you have to ensure proper authorization, entitlement and authentication.
b. the data runs on the wire and can be sniffed.
c. due to network "noise" and disruptions the message can be incomplete, and things like proxies and IPS enable injection and modification of data on the wire.
d. it is common for a single module to fail while others did not, this must be taken into account.

These issues have solutions, but the thing is that they have to be addressed explicitly. web services  do not deal with any of these issues by default.


Featured Post

Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When it comes to write a Context Sensitive Help (an online help that is obtained from a specific point in state of software to provide help with that state) ,  first we need to make the file that contains all topics, which are given exclusive IDs. …
Dramatic changes are revolutionizing how we build and use technology. Every company is automating, digitizing, and modernizing operations. We need a better, more connected way to work together as teams so we can harness the insights from our system…
The purpose of this video is to demonstrate how to set up basic WordPress SEO. This will be demonstrated using a Windows 8 PC. The plugin used will be WordPress SEO by Yoast. Go to your WordPress login page. This will look like the following: myw…
Any person in technology especially those working for big companies should at least know about the basics of web accessibility. Believe it or not there are even laws in place that require businesses to provide such means for the disabled and aging p…

695 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question