JBoss AS or Tomcat for seam applications? And why?

We are going to deploy a Java web application built using JBoss Seam as an application platform. We will be deployed in a cluster installation, as this is an e-commerce application, and we are concerned about both high availability and performance. We completed all our development and initial tests with an application deployed on JBoss 5.1, but recently we began to worry about things like memory size and performance, and also discussed the transition to Tomcat.

Our application is an e-commerce application using a typical multi-level application using JSF for presentation, EJB3 for the business layer and JPA / Hibernate for saving the PostgreSQL database. We also heavily use JBoss Cache 2.x to support caching and Hibernate Search (Lucene) to search.

I would like to hear the opinion of the community where the application server is best suited for Seam-based applications. I understand that we will have to make some changes to our application architecture (no EJB, timer-service-> Quartz scheduler, JBoss Cache-> ehCache, etc.) to support migration. We are comfortable making these changes if they are comparable to what we get with JBoss.

With JBoss, cluster configuration seems a lot easier. Can we do cluster tuning with quartz? Ehcache? As I mentioned, we are currently deploying JBoss 5.1. Will JBoss 7 give us better performance and less memory? If we choose Tomcat, we tend to Tomcat 7. Are there any good reasons to choose Tomcat 6.x?

I would like to hear your opinions and experience with this type of setting. We have read the documentation. We conducted trial testing on all platforms. But itโ€™s hard to understand what we should work with in production, and we donโ€™t want to make the wrong choice, and then we need to architecture and test everything again, because we made the wrong choice. Thanks for any opinions and advice you can provide!

+4
source share
3 answers

I donโ€™t think anyone can give a definite answer to your question with such a broad definition of your system.

I am currently using Seam / JBoss 5 in a similar setup (oracle instead of postgres) mainly for one reason: support. With support for RedHat professional services in the tightly integrated world of JBoss and Seam, you yourself should not neglect. Especially in a production environment. Even if you do not have it, it allows you to find out that you can do it in the future (if necessary).

However, choosing one or the other installation will probably require that you first test your application to find out exactly where you are having the problem (if you do). After all, is this the session size for the server implementation, or are you storing too much session information? Are you using session replication or not? Are you doing AJAX?

In most cases, productivity gains come from the implementation cycle โ†’ performance testing โ†’, and not from changes in implementation technologies. Hey, even Facebook uses MySQL for something that would not immediately find it unsuitable (public profiles - more than 600 million of them).

+3
source

Answer: "It depends."

You can consider the following aspects of making an informed decision:

  • If you want to use code only with standard API (Java EE) or depend on implementation-specific functions
  • Ease of configuration and your infrastructure

From my personal experience, we deploy complex applications on JBoss and simple ones on Tomcat / Jetty.

Quartz supports clustering as well as Ehcache do.

0
source

For most of the servlet container service, JBoss is managed by the tomcat internal container, this is before JBoss 6.

JBoss is the application server, and tomcat is the servlet container. I hardly think you should radically change your existing codes in order to adapt to Tomcat for this reason.

0
source

Source: https://habr.com/ru/post/1386977/


All Articles