Skip to main content

JBoss vs. Tomcat: Choosing A Java Application Server

Picking between the various Java application servers can be a challenge for developers who are new to developing online Java apps and Java-based sites. The big three are Tomcat, Glassfish, and JBoss. All of them are excellent platforms upon which develop and deploy applications, but they have different strengths. Making the wrong choice can result in more work than necessary, so we’re going to cut through the confusion with a quick guide to which application server will best suit your needs.

In 2013, JBoss received a name change and is now known as WildFly, but the old name is still widely used, especially by those using the older versions, so, we’ll stick to calling it JBoss for the moment.


What is JBoss?
Developed by JBoss – a subsidiary of Red Hat Inc. – the JBoss Application server acts as an open-source alternative to solutions such as IBM WebSphere and SAP NetWeaver. It chiefly relies upon Sun Microsystems’ Enterprise JavaBeans API for functionality. Like most systems developed on EJB, it is designed to allow developers to focus primarily on the business architecture of the server, rather than getting bogged down in unnecessary programming and coding to connect the different working parts.

In addition to providing JBoss and all its associated middleware free of charge, Red hat operates a Developer Program that allows subscribers to gain direct access to exclusive content and product-focused forums. This program, too, is available free of charge, and exists primarily to drive JBoss development and foster a positive developer community. Developers are encouraged to participate on the official boards, contributing code and reporting issues wherever they crop up.

Lightweight and cloud-friendly, JBoss is powerful enough for use in enterprise, and features a middleware portfolio to help accelerate application development, deployment, performance, data integration, and automation. The JBoss website features extensive developer materials, training courses, and informational documents for both new and veteran devs.

What is Tomcat?
Often referred to as “Apache Tomcat,” Tomcat is not technically an application server at all – a fact which generates some confusion amongst first-timers, as ‘application server’ and ‘web server’ are all too often used interchangeably.

Rather, Tomcat is more of a web server and web container. This does not mean it lacks functionality, mind you. An open-source implementation of the Java Servlet, JavaServer Pages, Java Expression Language, and Java WebSocket Technologies, it is intended as a platform for powering large-scale, mission-critical web applications. It is used by major enterprises across several industries and verticals, including development, finance, healthcare, government, ecommerce, retail, and marketing.

As with JBoss, Tomcat’s core developers strongly encourage community participation in the evolution of their platform. They host an extensive development community, with thorough documentation and an active support forum. Apache also maintains a mailing list with updates, tips and tricks, and information on Tomcat.

The Major Differences Between JBoss and Tomcat
Both JBoss and Tomcat are Java servlet application servers, but JBoss is a whole lot more. The substantial difference between the two is that JBoss provides a full Java Enterprise Edition (JEE) stack, including Enterprise JavaBeans and many other technologies that are useful for developers working on enterprise Java applications. Tomcat is much more limited. One way to think of it is that JBoss is a JEE stack that includes a servlet container and web server, whereas Tomcat, for the most part, is a servlet container and web server.

That said, it can also run enterprise applications, a fact which causes no small amount of confusion.

“Many application developers do not focus much on the infrastructure on which their code runs,” writes Manu PK of The Java Zone. “When it comes to web applications, the difference between web servers and application servers [is a common confusion]…Typically, we get confused when [we see that] Tomcat [has] the ability to run enterprise applications.”

When To Choose JBoss
JBoss is the best choice for applications where developers need full access to the functionality that the Java Enterprise Edition provides and are happy with the default implementations of that functionality that ship with it. If you don’t need the full range of JEE features, then choosing JBoss will add a lot of complexity to deployment and resource overhead that will go unused. For example, the JBoss installation files are around an order of magnitude larger than Tomcat’s.

When To Choose Tomcat
Tomcat is a Java servlet container and web server, and, because it doesn’t come with an implementation of the full JEE stack, it is significantly lighter weight out of the box. For developers who don’t need the full JEE stack that has two main advantages.

Significantly less complexity and resource use.
Modularity.
There are numerous providers of add-ons that work with Tomcat. Developers can choose the specific implementations they want to use to add extra functionality. For example, Tomcat can’t natively host Enterprise JavaBeans. However, if users need Enterprise JavaBeans (EJB) functionality like the persistence and transaction processing that the EJB container model provides, but want to avoid the problems inherent in the main implementation, there are many lightweight alternatives, including the Spring Framework and OpenEJB

Popular posts from this blog

ORA-02051 Another Session Or Branch In Same Transaction Failed

ORA-02051 Another Session Or Branch In Same Transaction Failed (Doc ID 2253226.1)          SYMPTOMS for ORA-02051 Another Session Or Branch In Same Transaction Failed. Database performance is slow and caused   the transactions ORA-02051 another session or branch in same transaction failed or finalized CAUSE for ORA-02051 Another Session Or Branch In Same Transaction Failed. Session transactions branches caused the issue Excessive Waits On The Event "Global transaction acquire instance locks" SOLUTION Please use below sql and identified underscore parameter values for ORA-02051 Another Session Or Branch In Same Transaction Failed : SQL> select a.ksppinm "Parameter", b.ksppstvl "Session Value",c.ksppstvl "Instance Value"  FROM x$ksppi a,x$ksppcv b, x$ksppsv c  WHERE a.indx = b.indx AND a.indx = c.indx AND a.ksppinm LIKE '/_%' escape '/'  AND (a.ksppinm like '%clusterwide_global%' or a.ksppinm like '%disable_autotune_...

Video Conferencing Project in Java Source Code

Video Conferencing Project in Java Source Code     ################################################################################# FEATURE ################################################################################# 1.Multi Chat(Used Threadpole) 2.P2P Chat 3.P2P Audio Chat 4.P2P Video Chat 5.Complete Automated 6.H.263 compression Video 7.raw audio PREREQUISITE: 1. JUST INSTALL jmf-2.1.1 e @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ *****/  just need to copy the client side code and run it to a pc   not need any manual IP ***/  How to run : Just run server side code in a PC and then Run Client side code to different  PC.Then the work is done. Server Side Code: ClientListener.java Clients.java Main.java MessageListener.java ServerConstant.java ServerManager.java ServerMonitor.java ServerStatusListener.java   ClientListener.java /*  * To change this template, choose Tools | Templates  * and open the tem...

DBA_SCHEDULER_JOB_RUN_DETAILS and PURGE_LOG

How to purge DBA_SCHEDULER_JOB_RUN_DETAILS? Manually deleting from DBA_SCHEDULER_JOB_RUN_DETAILS is not recommended by oracle.DBA_SCHEDULER_JOB_RUN_DETAILS is a view that is using two master tables (scheduler$_job_run_details and scheduler$_event_log) and display the information about jobs history. As there is one procedure named PURGE_LOG and Oracle have Scheduler for this procedure. It will purges all rows in the job log that are older than 30 days.This is the default behavior of this procedure. You can change this to any number of days you want by setting the attribute "SET_SCHEDULER_ATTRIBUTE". e.g. exec DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE('log_history','15'); It will purge all logs older than 15days and it will maintain the history of 15days. But If you want manually purge these logs, you can use below solution:- exec DBMS_SCHEDULER.PURGE_LOG(log_history => 15, which_log => 'JOB_LOG'); It will purge all entries from the jog log that are o...

JAX-WS Hello World Example – RPC Style

JAX-WS Hello World Example – RPC Style AX-WS is bundled with JDK 1.6, which makes Java web service development easier to develop. This tutorial shows you how to do the following tasks: Create a SOAP-based RPC style web service endpoint by using JAX-WS. Create a Java web service client manually. Create a Java web service client via  wsimport  tool. Create a Ruby web service client. You will be surprise of how simple it is to develop a RPC style web service in JAX-WS. Note In general words, “ web service endpoint ” is a service which published outside for user to access; where “ web service client ” is the party who access the published service. JAX-WS Web Service End Point The following steps showing how to use JAX-WS to create a RPC style web service endpoint. 1. Create a Web Service Endpoint Interface File : HelloWorld.java package com.mkyong.ws ;   import javax.jws.WebMethod ; import javax.jws.WebService ; import javax.jws.soap.SOA...

Oracle character AL32UTF8

The character set determines what languages can be represented in the database. Oracle recommends using Unicode (AL32UTF8) as the database character set. AL32UTF8 is Oracle's name for the UTF-8 encoding of the Unicode standard. The Unicode standard is the universal character set that supports most of the currently spoken languages of the world. The use of the Unicode standard is indispensable for any multilingual technology, including database processing. Changing the database character set is a time consuming and complex project. Therefore, it is very important to select the right character set at installation time. If the language is American English or a Western European language, then the default character set is WE8MSWIN1252. Each Microsoft Windows ANSI Code Page can store data from only one language or a limited group of languages, such as only Western European, or only Eastern European, or only Japanese. AL32UTF8 is a multibyte character set, database operations on character...

ORA-02291: integrity constraint violated - parent key not found

“Error: ORA-02291: integrity constraint violated - parent key not found” Reason:    A Primary key does not have the same value as the foreign key. We will discuss it in detail later in this article. Action:   For  ORA-02291: integrity constraint violated - parent key not found  You may either delete the foreign key or the matching primary key can be added. In either way, you may try to get this error corrected. Let's understand more about ORA-02291: integrity constraint violated - parent key not found? The Oracle software brought us the strength by which multiple tables in the database can pass on information so efficiently. Not only this, there are numerous devices in this software which enables access to and sourcing data from multiple tables. You can easily execute complicated database issues without an unusual uncertainty by creating statements with the fantastic characteristic of this software. Realistically, if we talk about user or database no one is perf...