Nav

Mule ESB 3.0.0 Release Notes

The Mule team is pleased to announce the General Availability of Mule 3.0. This is a new major iteration of the world’s most widely used open source enterprise service bus. This latest version of Mule represents the next generation of integration infrastructure software that enables developers to easily integrate enterprise data and applications seamlessly with today’s SaaS and cloud-based web applications.

Current Release Version

Enterprise Edition Community Edition

ESB

x

Management Console

 

Mule Cloud Connect

Mule Cloud Connect is a collection of new features and improvements to Mule that make it dead-simple to securely integrate your enterprise with cloud-based data and services. At the core of it is iBeans - small, re-usable connectors that leverage the native web technology support in Mule to connect to external applications and data services.

Mule-Cloud-Connect-Diagram-092810-400px

Mule Cloud Connect includes:

Integration Beans] - These are small re-usable connectors that can be injected into your components to access external services such as Amazon Web Services, Twitter and Facebook. They provide a really easy way of accessing services managing all the security, request validation, data transformation and error handling.

REST / JAX-RS - Jersey is now part of the core mule distribution, providing native support for REST and JAX-RS. Like Apache CXF, Jersey is now both easily to configure and highly flexible. Instead of being an endpoint type, Jersey is now implemented as a type of component that can contain any number of Jersey resources.

AJAX - Mule now can integrate directly with JavaScript applications. Mule 3 includes server side endpoints and JavaScript client that allows events to be published directly to the browser and events to be published from the browser.

Web Services - Now more easily configurable and more flexible. CXF is now configured as a message processor within a flow or on an endpoint in a service. This message processor is simple to configure since there is specific XML syntax for each use case: client, server, and proxy. Axis is no longer included in the core Mule distribution.

ATOM and RSS - Mule 3 Now has built in support for polling feeds and splitting entries and producing ATOM feeds.

JSON Support - Mule 3 introduces JSON data handling. As well as adding JSON transformers, JSON data can automatically be marshaled into Java objects and back to JSON.

JAXB Support - Automatic XML binding now supported for components and new JAXB transformers have also been added.

Flow

Flow - A new way of configuring Mule to take full advantage of the flexibility and power of the new Message Processor API. Flow is a more natural way of defining some integration scenarios and more powerful and flexible than the Mule service model.

Patterns

Configuration Patterns - The introduction of configuration patterns in Mule greatly reduce configuration and make common tasks such as Transactional Bridging or creating a Web Service Proxy really easy.

Annotations

Annotations - New annotations have been introduced enabling injection of message information into transformers and components. The @Transformer annotation makes creating transformers much easier and the @Schedule annotation makes polling component methods simple.

Deployment

Deployment Model - Mule now defines a simple application model that allow individual services or groups of services to be deployed as packaged applications into the Mule run-time.

Hot Deployment - Mule now supports multiple applications running within the same Mule instance with complete isolation from other applications in the container. Development time automatic hot deployment is supported with new changes being affected within milliseconds.

Architecture Improvements

Message Processor API - An architectural change to simplify Mule’s internals and give it the flexibility to implement other patterns in the future which align more closely to specific scenarios beyond the service/component elements which you all know and love.

Message Exchange Patterns - (a.k.a. MEPs) give you more explicit and flexible control over the way messages flow through Mule. For example, you can now specify whether you expect a response on a given endpoint or not (see the new attribute "exchange-pattern" on endpoints). In the future, we may introduce additional exchange patterns that allow for different communication styles as well.

Message Property Scoping - Message properties are now scoped in either 'inbound', 'invocation' or 'outbound' scope. These scopes provide isolation and consistency to the way properties are attached to inbound and outbound messages.

Lifecycle Improvements - Improves behavior during startup and shutdown of applications, a very important aspect of hot deployment. We have also added support for JSR-250 lifecycle annotations @PostConstruct and @PreDestroy.

Exception Handling - Exception strategies were simplified to provide more consistent and predictable error-handling behavior.

Automatic Transformation - The transformation engine has been enhanced to support Data bindings such as XML/JAXB and JSON/Jackson. Also Mime types are now supported when discovering transformers.

CXF Now a Module - Mule 3.0 architectural changes bring much better support for CXF, meaning it can be used just like another pipe/filter element.

REST: First Class Citizen of Mule - Mule has enjoyed rich REST support since we released the REST Pack for Mule 2.0. The REST pack has been moved into the core, and we have added some new capabilities, such as support for including RSS and ATOM support and simplified configuration.

Examples

Changes to examples - The Loan Broker example has been simplified. The Mule Examples Web App from Mule 2.x is temporarily removed for 3.0, but it will be restored soon. The examples no longer use the STDIO transport and instead use HTTP.

Other Changes

Message factories - Translate messages from the underlying transport format into a MuleMessage. Almost all messaging protocols have the notion of message payload and header properties. Message factories extract that payload and optionally copy all properties of the transport message into the MuleMessage. A MuleMessage created by a message factory can be queried for properties of the underlying transport message.

Dynamic Endpoints - Endpoints in Mule can now be dynamic. Addressing information can be constructed from the contents of the message or via any Mule expression.

JBoss jBPM - Mule has had integration with JBoss jBPM for a long time, but we have recently improved our support for Mule 3.0, including an upgrade to the latest major version of jBPM (4.4), much simplified configuration, and cleaner integration with Mule from your process definition, including custom process elements. For more information, refer to our BPM documentation.

Transaction Enhancements - By setting attributes on a new element called <xa-transaction> Mule can now pay attention to (or ignore) transactions started outside of Mule.

XQuery Support - The XQuery Module gives users the ability to perform XQuery transformations on XML messages in Mule. This works in a very similar way to the XSLT Transformer shipped with Mule.

AXIS Code Removed from MULE - Axis support is available as a separate EE module.

Fixed in this Release

Mule Community Edition version 3.0.0 builds on the features that were added in version 2.2.1 and fixes the following issues. In addition, all the fixes from previous 3.0 milestones are included.

JIRA Issues (43 issues)

Priority Type Key Summary Priority Type Key Summary

Blocker

Bug

MULE-5044

A dynamic endpoints contaioning a template does not work as a target of a FilteringOutboundRouter

Blocker

Bug

MULE-5073

bookstore example email not working

Blocker

Bug

MULE-5078

The errorhandler example fails to start up on Windows

Blocker

Bug

MULE-5074

errorhandler example error

Blocker

Improvement

MULE-4990

Review the property scoping behavior of the VM transport

Blocker

Bug

MULE-5048

MuleContext is not injected into Message Processor configured on endpoints

Blocker

Task

MULE-5033

Re-add the CPAL license acceptance code

Blocker

Bug

MULE-5041

AbstractEndpointBuilder build methods change state of builder

Critical

Bug

MULE-4960

The AbstractExceptionListener handles the LifecycleException twice

Critical

Bug

MULE-5010

Filter gets applied too soon in the inbound MP chain

Critical

Bug

MULE-5051

jBPM transport broken by changes to message property scopes

Critical

Bug

MULE-4864

Mule exceptions do not halt process execution

Critical

New Feature

MULE-5045

Create a Mule app plugin for Maven

Critical

Bug

MULE-5054

flow-ref element is not documented in schema

Critical

Bug

MULE-5067

Components don’t work inside anything but a top level <flow>

Critical

Bug

MULE-3607

Outbound endpoints transformer exceptions invoke wrong Exception handlers.

Critical

Bug

MULE-5034

Instructions for msg.getAttachmentNames() deprecation are wrong

Critical

Patch submission

MULE-4840

Exception message sent twice to the outbound endpoint defined in the exception strategy

Critical

Task

MULE-4305

Update archetype templates for a new schema namespace convention (without version number)

Major

Bug

MULE-4418

Cookies are lost on endpoints

Major

Bug

MULE-4562

CXF endpoint binds to the wrong wsdl port

Major

Bug

MULE-5058

custom-outbound-router fails with useTemplates error

Major

Bug

MULE-5061

Embedding a (script) component inside <choice><when> fails with NPE

Major

Bug

MULE-4442

One way invocations in CXF cause NullPointerException

Major

Bug

MULE-4908

JmsMessageDispatcher not XA Transaction aware, closes JMS Session

Major

Bug

MULE-4904

NPE in MuleClient because DispatcherWorkManager has not been created

Major

Bug

MULE-5071

<simple-service> doesn’t inherit 'type' attribute from the parent

Major

Bug

MULE-4961

JXPathExpressionEvaluator doesn’t recognize namespaces if prefix is different.

Major

Task

MULE-4473

Review archetypes for 3.x

Major

Bug

MULE-4890

JBpmFunctionalTestCase intermittent failures

Major

Bug

MULE-4955

Refactor Exception Strategy invocation so we don’t get exception strategies invoked twice

Major

Bug

MULE-5000

properties and attachment behavious inconsistent when using VM and MuleClient

Major

Bug

MULE-5046

Errorhandler’s handling of BusinessExceptions does not work

Major

Bug

MULE-5037

Jersey module has incorrect packages names (that include transport)

Minor

Bug

MULE-4137

Log4jNotificationLoggerAgent is useless

Minor

Improvement

MULE-4954

Sanitize Mule stacktraces

Minor

Bug

MULE-5062

Inconsistent expression syntax in choice/when constructs

Minor

Task

MULE-5047

Upgrade profiler pack for YourKit Profiler 9.0.x

Minor

Task

MULE-4895

Implement different startup/shutdown splash screens based on container/embedded mode

Minor

Task

MULE-5064

Upgrade Spring xml namespaces to Spring 3.x

Minor

Bug

MULE-4448

Example project generated using example archetype is missing assembly.xml

Minor

Task

MULE-3132

CXF should log via slf4j rather than separately using java.util.logging

Trivial

Task

MULE-5072

Rename <simple-service/>'s type from 'default' to 'direct' to better convey its meaning