This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
We are planning to use the below architecture (attached image) for a jee project. The architecture will have three tiers.
JSF in the presentation.
Spring is used to implement the business-logic tier.
Hibernate in the DAO part.
This is a big application(like an ERP) and it has around 12 modules....each module will have around 40 screens average.
My questions are,
Is this a good method to implement this requirement.?
When the application get bigger,will there any performance issues when building.?
Is there any better method to handle multiple modules in a single web application.?
We are planing to use tomcat as server. is it a good choice?
Suggestion - Create an enterprise application using Net Beans and look at the organization for creating EJB & Web tiers.
You may want to separate your biz tier & web tier components under separate nodes.
Typically, I use something along the lines of the following organization, where my subdomain might be what you are referring to a module or might be a higher level of enterprise granulation for a large segment within a domain.
web.com.mydomain.subdomain.leafpkg.(view) (jsp, jsf pages)
The general rule of thumb is that a package should have on the order of 9 to 12 implementation units. Once you get above a dozen (i.e 15 to 20 and up), you should consider different organization for better modularity. That metric goes way back to OO best practices by Booch et al.
Tomcat is a good server and is used widely.
As for your choice in technology, would suggest you do more research and evaluation before making a choice.
If JEE6 is an option, you may want to investigate GlassFish & JBoss for AS, and other JEE6 technologies including JPA, JPQL and CDI. JPA can work with Hibernate but it provides a level of wrapping (abstraction) that makes it independent of Hibernate. In JEE6 you don't really need Spring any longer. CDI and Weld facilitate dependency injection within the JEE6 APIs with the benefit that it is an officially sanctioned API for Java.
You may want to try out Net Beans 6.8 with GlassFish v3 to evaluate. It is pretty easy to work with.
You can also consider tools like beanwizard.com to generate components for rapid development