Nav
You are viewing an older version of this section. Click here to navigate to the latest version.

Mule versus Web Application Server

A question that commonly arises about Mule: "How does Mule compare to JBoss, Tomcat, or other web application servers?"

While they share some important similarities, the differences come down to what you are trying to achieve. Certain kinds of applications are easier to write, deploy, and manage in Mule, and other kinds of applications would be easier to write, deploy, and manage using a web application server. 

Similarities

First, let’s take a look at the similarities between Mule and a web application server:

  • They both allow you to run multiple applications simultaneously.

  • They both provide an application container. In other words, they both provide an environment in which an application can run, acting as an intermediary between application code and the operating system, and providing database access, easier communication over the network, memory management, lifecycle management, and other services.

  • They both allow you to manage your applications at runtime.

Differences

However, Mule works differently from a web application server because of its core activity as an integration platform. 

Mule specializes in three things:

  • acting as a platform for applications that move data from one place to another – often transforming that data along the way so that it is readable at the other end

  • exporting services to other applications

  • orchestrating services

Comparison

Mule Web Application Servers

soft-softMule was built to make software-to-software interactions easier. 

soft-peopleWeb application servers are designed to make software-to-end-user interactions easier. 

icon-gears-blue-small

Mule specializes in integration between different applications, databases, and cloud services.

icon-team-blue-smallWeb applications specialize in interaction with end users.

icon-stopwatch-blue-small

Mule applications are stateless and event-driven.

icon-time-blue-small

Web applications are stateful.

icon-concept-blue-small

Mule supports service-oriented architecture.

tiersWeb applications support multitier architecture.

Mule applications are built as a series of lightweight, stateless components in an event-driven processing chain called a flow.

Data travels in, through, and out of a Mule application, connecting other applications, databases, enterprise systems, or cloud services to one another. By keeping individual services at either end of the flow discrete, Mule supports http://en.wikipedia.org/wiki/Service-oriented_architecture[service-oriented architecture].

Web application servers support a http://en.wikipedia.org/wiki/Multitier_architecture[multitier architecture], which allocates presentation, processing, and data management into logically separate layers.

Using a web application server makes it easy to deliver a graphical user interface on the presentation layer, but it doesn’t include the integration capabilities of Mule that would allow it to connect seamlessly to databases or other services. For that, you’d have to write custom code. 

You can successfully embed Mule within a web application server like Tomcat or JBoss, or you could embed any other kind of web container inside a Mule flow. Leveraging Mule for the integration and service orchestration tasks that it was designed for and using an application server to handle the end-user interactions can provide a full spectrum of functionality. 

If you need to implement a user interface, a web application server is generally a better bet. This doesn’t mean that it wouldn’t be possible to build in Mule, but doing so might be time-consuming and complex.