Bindings, Platforms, and Innovation
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
Tracking change and innovation in the enterprise software development community
Posted by Ian Roughley on Apr 24, 2008 08:47 PM
Mule, a lightweight and highly scalable ESB, has just release Mule 2.0. New features in the 2.0 release include:With the architectural work, new XML configuration and package re-organization, how different is Mule 2 from Mule?
The major change is the new XML configuration. All config elements are well-typed and described. there are no more class names in the config files (except for you own custom extentsions). Each namespace introduces a module or transport into your configuration. Where transports are concerned a namespace allows user to configure transport specific endpoints for every transport making it much easier to know what must be configured and what other config options you have. Using schema-based config also gives developers code completion and inline documentation in most Xml editors.
Architecturally, there are a couple of changes that are immediately apparent:
- No More MuleManager. Instead we have split out this monolithic object into manageable pieces that now make it much easier to extend and hook into core server behavior .
- From the users point of view the objects they deal with are much more well defined. We've look very carefully at all objects in Mule and made sure there definition and roles are well defined.
- You now have a MuleContext that provides access to Mule resources at runtime (1 per instance).
- You have the Registry that manages runtime objects. You can have multiple registries that enables you to overlay configuration on an existing instance of Mule.
- We have split the notion of Component (your POJO that does your business logic) Service (the configuration that defines how the Component will be managed as a service. This was an important distinction to help users understand the relationship between Component and Service
- The core architectural concepts have not changed, this means old Mule users are not bombarded with new terminology or a different way of working.
Is there a recommended upgrade path for existing Mule users?
Right now it's a manual process for users to switch their configuration to Mule 2.0. The configuration structure is pretty similar to Mule 1.0 but there is much less configuration required for Mule 2. For our Mule Enterprise customers we will be releasing a Migration tool when we release Mule Enterprise 2.0.
With an impressive list of features, what do you think users will be most thankful for? What feature are you most proud of?
I am most proud of the core architecture piece since we've made huge improvements internally to mule. We needed to do this to create a compelling platform for new projects on top of Mule. Unfortunately, most users will never see these changes directly :)
- We've added an expression evaluator framework that means users can define expressions in xpath, xquery, groovy, jxpath, and use Mule specific handlers such as header, attachment and function expressions. to grab information from the message at runtime. These expressions can be used to quickly transform the current message, construct new messages and do content based routing. This is pretty powerful stuff since it makes runtime configuration much more dynamic. It's also very easy to plug in new expression evaluators for things like mvel, ognl, or jruby.
- The message handling has been revamped and we now support Auto Transformations which will discover existing transformers and apply them to payloads when necessary. It also means users can request the message payload as different types just by doing MuleMessage.getPayload(org.w3c.dom.Document.class) or MuleMessage.getPayload(org.xml.sax.InputSource.class). Users can still explicitly define transformers as before.
- Message handling is generally more efficient. Streaming is handled by default, there is no need to explicitly define streaming endpoints anymore
- Transport-specific endpoint configuration is a huge improvement and will eradicate the issues many users had configuring endpoints incorrectly
- We released a Milestone of Mule IDE at the same time as Mule 2.0. This is based on Eclipse and includes a preview to the new Visual drag'n drop editing.
Anything else you want to add?
Some architecture changes were also made to allow Mule to be loaded from an OSGi container. Mule 2.0 does not support OSGi yet, bet we gave a demo of Service hot deployment in Mule at MuleCon in San Francisco earlier this month and everyone there seemed to be very enthusiastic about it.
Mule 2.0 is available now, to see how the new features work check out the overview and download the latest version.
Comprehensive Threat Protection for REST, SOA, and Web 2.0 Applications
Business Benefits of Open Source SOA
Intel® SOA Expressway Performance Comparison to IBM® DataPower XI50
Would you enroll in an India Forex Group i.e http://www.indiaforex.com Groups?
Great news about OSGi and I look forward to full support. Would be very useful to be able to drop Mule in to my existing container to get an instant ESB for my bundles, especially being able to auto-magically expose my services registered with the OSGi container as Web-Services. Also, has there been any thoughts towards supporting AMF as a transport protocol? Flex is gaining popularity and we're already using Flex with OSGi. I can see Mule being very useful for wiring the communications between distributed OSGi containers and Flex clients, but I'll be waiting for official OSGi support before I try it. Good job though. =)
Christopher, If you are interested in Mule / OSGi - check out the Mule4Newton project http://mule4newton.codecauldron.org/ In addition to Mule in an OSGi container - you also get all the dynamic distributed benefits of Newton. Regards Richard
You can also use AMQP as a message based transport using RabbitMQ which now has a Mule adaptor - thanks to Ross, and to Neil Ellis from the Newton/Paremus team - and a Flex client thanks to Ben Hood. Neil Bartlett has released some OSGi support for the RabbitMQ Java client as well. For a demo of Mule working with RabbitMQ and Newton all at the same time, either as a package or as a runnable virtual server, please contact me, or Neil Ellis. Cheers, alexis
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.
This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.
This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.
This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.
After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.
IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.
Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.
3 comments
Watch Thread Reply