How To Migrate Your Weblogic or WebSphere App to Tomcat

Reading Time: 13 minutes

There is no shortage of well-known reasons for wanting to migrate your Java EE web application to open source Tomcat. But without development experience with both your current Java EE application server as well as with Tomcat, it isn’t clear what you must change in your Java EE application to get it to run properly on Tomcat. The benefits of being able to run it on Tomcat are significant — for example, Tomcat is free to run in production, and Tomcat is faster at tasks such as redeployment.

It’s easy to migrate your Java EE app to Tomcat as long as it’s mainly a web container app, and as long as you know what you might need to change in your app’s code to get it running on Tomcat. Even if your Java EE app uses other Java EE server components, you can still migrate it to run on Tomcat if you add the open source counterparts of those Java EE components to Tomcat — you would need to know which open source components to add, and some instructions on how to make them work with Tomcat. For example, if your app used EJB, you could add OpenEJB to Tomcat.

For the purposes of this blog, I’ll focus on migrating from Weblogic to Tomcat, and on migrating from WebSphere to Tomcat. But, it’s a similar process if you’re migrating from other app servers such as JBoss or Glassfish.

If you’re using Weblogic, see this page about the steps to migrate your Java EE app from Weblogic to Tomcat. The steps for changing the webapp’s code to run on Tomcat include:

Continue reading

Feed my inbox; reading RSS feeds with Mule ESB – Part 2

Reading Time: 6 minutes

In my last blog post I showed a simple flow to retrieve an RSS feed periodically, split it and send each RSS entry via eMail. The solution has one major drawback, though: once the Mule application is restarted, Mule has forgotten which feed entries have already been sent. The RSS feed is retrieved again and another bunch of eMails is sent.

Adding idempotency

The standard EAI pattern for receiving messages only once is the idempotent receiver. Mule’s implementation for this pattern is called idempotent-message-filter. To use it in our flow it goes right after the RSS splitter so that any duplicate RSS entries are filtered out.

Unfortunately, adding the idempotent message filter alone won’t help as it still keeps the identifiers of the messages it has seen in memory. To be really useful we need to add persistence to the filter:

Continue reading

Mule 3: Services or Flows? You can have both!

Reading Time: 8 minutes


The service framework in Mule has always existed for building integration solutions. The design is simple and highly scalable: 1) messages flow in on a channel to an inbound endpoint, 2) transformations and filters are applied (if necessary), 3) the service component processes the messages and, finally, 4) the outbound router sends them on their way to the desired outbound endpoint (again, applying any transformations or filters as necessary). Using this basic concept, many integration patterns can be solved, and since it is based on a SEDA architecture, when processing is asynchronous, Mule ensures high performance and scalability.

Continue reading

Activiti + Mule ESB – Part 1

Reading Time: 14 minutes

We are pleased to announce Mule 3 Activiti support. We’re very happy to be working with the Activiti team and see a lot of value for our community using Mule and Activiti together. I already discussed why BPM and ESB need to work together and two different uses of ESBs with BPM. Today I am going to present a real world example.

For those that may not be familiar, Actiiviti is an open source BPMN 2.0 modeling tool and BPM runtime, founded by Alfresco and developed with other open source companies.

Getting Started

My example application uses Mule ESB and Activiti allowing users to view low-resolution images and request a high-resolution version that needs to be approved by a human participant (similar to Stock.XCHNG). Mule will handle the creation of the Activiti process and will take care of exposing it as a service. Activiti will take care of orchestrating the process that requires a user task (approval).

Continue reading

Enrich your experience; Orchestration and Data Enrichment with Mule 3.1

Reading Time: 8 minutes

One  of the enterprise integration patterns that Mule hasn’t explicitly supported up until now is the “Content Enricher”.  Enrichment has of course been possible but it hasn’t been as easy as it should have been.  That’s changing for Mule 3.1 as we introduce support for message enrichment.  Read on to learn what you can do with the new enricher and see some examples..

Continue reading

Kanban from the trenches; Lessons learned (Part 2)

Reading Time: 12 minutes

On my previous post about Kanban, I presented the challenges we had in our Engineering team. They were:
1. Uncontrolled growth of Work In Progress.
2. Not Enough visibility.
3. Reduced quality.
4. Inability to properly estimate all tasks upfront.
5. Planned features and improvements are hard to manage and implement.

During the implementation of Kanban we focused on solving those problems.

Continue reading

Inter-operable Publish/Subscribe With AMQP

Reading Time: 10 minutes

Being able to publish and subscribe to event streams is a powerful enabler for business activities. As business rules change and systems evolve, the low coupling that is inherent to this integration pattern allows an IT landscape to evolve gracefully.

Imagine, for example, that you need to perform several independent actions whenever a user signs-up to your site (like: create an account, register to a marketing mailing list, warm-up caches…). A good design would be to have these different actions performed by different systems acting upon receiving their marching order from a central place where “new user sign-up” events would be published to.

In the enterprise world, publish/subscribe design is generally achieved by using a messaging platform that presents a bias towards a particular technology like JMS or MSMQ. Though perfectly fine, these solutions inter-operate poorly with systems running on heterogeneous technologies.

Continue reading