Access Keys:
Skip to content (Access Key - 0)

Frequently Asked Questions

To understand what Mule is and how it works, see the Getting Started pages. In addition, some frequently asked questions are answered below.

How does Mule work with my webapp?

Mule can easily be embedded in a [webapp] or any other Java [application] and can be used to handle complex interactions with external sources and applications. Mule also provides powerful [routing] capabilities for request/response processing to allow your webapp to execute actions across the network concurrently. Mule manages the collating of the results before returning a response.

You can invoke Mule components from JSP pages or servlets using the [Mule Client], or you can use the REST service wrapper component of the [HTTP transport].

Why not just use JMS?

JMS is a vital tool in the enterprise toolbox, but on its own it leaves a lot of additional work for the developer. Mule provides a simple, consistent, yet fully customizable way to work with JMS or any other messaging, transport, or repository technology. Components in Mule are wired together using a variety of technologies while simultaneously abstracting those technologies away from the application.

How does Mule compare to JBI?

JBI is XML-centric, whereas Mule makes no assumptions about the message type, so you can easily use strings, binaries, MIME, XML, streaming or a mixture of formats without any extra development. JBI is also WSDL-centric, and while Mule does support WSDL, it also allows for other message contracts such as Java interfaces, annotations, or data matching contracts. Mule works with any JBI container, so Mule components, routers, endpoints, and transformers can be executed in a JBI container.

What is a component?

Any object can be registered with the Mule server as a component, including Beans, EJBs, MBeans, Service proxies, or "plain-old Java objects" (POJOs). The only requirement is a public method on the object to pass data events to. This method is dynamically discovered at runtime depending on the type of event received and any transformers configured for the event. Though it is also possible to explicitly configure how the component is invoked.

What is a service?

A service in Mule (mule-descriptor in Mule 1.x) describes how interactions with a component will be made as will as information about how error handling will occur. The service contains a component and describe the inbound and outbound endpoints, routing and transformation behavior as well as transaction demarcation for the component.

What is zero code intrusion?

Mule does not impose any restrictions or preconditions on the objects you want Mule to manage. Mule uses discovery to determine which method should be executed when an event for the component is received. The discovery method used can be overridden to change the way the event method is resolved.

What do you mean by light-weight?

Light-weight refers to the fact that you don't need a big server to run a Mule instance. In fact, its memory and disk footprints are very small. For example, one customer's application was configured to run over eight machines that had to process hundreds of thousands of events. With Mule they could run a respectable demo of the whole system on an outdated laptop.

What do you mean by event-driven?

Event-driven simply means that all data transitions in Mule are treated as events, and that information entering the system, such as a customer request over the web, are events. This means that the system is reactive to a change in state. Mule services will usually be triggered by events and create new events.

How does Mule enforce decoupling?

Decoupling refers to having each component in the system totally independent (and oblivious) to other components in the system. The advantage of decoupled systems is that components can be added, enhanced, or removed, causing little or no disruption to other components. Decoupled systems built on messaging are inherently fault-tolerant because of the autonomous nature of the components and the fault tolerance of the underlying message server, such as persistent queues, durable subscribers, and replication using load balancing.

Mule decouples your components from the complex infrastructure details of your application. Your components can concentrate on core business functionality while Mule handles all the details of transforming, routing, and delivering business data around your application.

How does Mule provide scalability?

Scalability is the ease by which the application can be altered in response to higher demands on the application. Mule uses the SEDA processing model to increase the performance and throughput of events. Mule allows pooling of message objects and transports to allow multiple threads to process events concurrently.

Scalability often also requires that more systems are added to increase the throughput or load the application can handle. In any integration system there are many ways to scale up using load balancers, compute grids, clustering Application Services or Message queues. Mule can work in all these scenarios as more. For more information talk to MuleSource for further information.

Where do I go to learn more?

There is a wealth of information about Mule contributed both by the community and by MuleSource:

Getting Started Guide - introduces the core concepts of Mule and how to get started.

[Users Guide] - covers all areas of Mule including usage, configuration, and customization.

Mailing Lists Archives - A good place to find answers to previously asked questions. You can subscribe to the lists and post questions. The User list is suitable for most users.

How do I report a bug?

If you find a bug, you can report it on the Mule Issue Tracker. You will need to sign in as a new user so that you can create issues. Please include as much information as possible when creating the issue. If you fix the bug yourself, you can include a CVS patch or ZIP of the code and include that in the issue.

Once you have created the issue, it will be published to the Mule Developer list, so there is no need to post it directly to the list as well.

How do I request a new feature?

If you want a new feature added to Mule, you can take one of the following steps:

  • Write the code yourself and submit the code to the Mule Issue Tracker.
  • Post the idea on the Mailing Lists and also log it on the Mule Issue Tracker. This will kick off a discussion of the idea and some one may pick it up and code it for you, or you can code it yourself.
  • Visit Mule Forge and propose a project. We will supply you with a Repository, Confluence Wiki Space, JIRA project, Automated Bamboo Builds, mailing lists, and forum, and you can manage your own project.

Why is Mule called Mule anyway?

Ross Mason, the inventor of Mule and CTO of MuleSource, explained the origin of the name as follows: "After working on a couple of bespoke ESB systems, I found that there was a lot of infrastructure work to be done before you can really start thinking about implementing any logic. I regard this infrastructure work as 'donkey work,' as it needs doing for every project. I preferred 'Mule' over 'Donkey,' and a mule is also commonly referred to as a carrier of a load, moving it from one place to another. The load we specialize in moving is your enterprise information."

Adaptavist Theme Builder (3.3.2-conf2.10) Powered by Atlassian Confluence 2.10, the Enterprise Wiki.
Free theme builder license