Mule Slideshow 1

54
Mule 2 and Beyond Ross Mason CTO, Co-founder, MuleSource Inc.

Transcript of Mule Slideshow 1

Page 1: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 1/54

Mule 2 and Beyond

Ross Mason

CTO, Co-founder,

MuleSource Inc.

Page 2: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 2/54

© 2006-2007 MuleSource Inc

Agenda

• What is Mule?• Introduction to Mule 2

 – New platform

 – New features

• Beyond Mule 2 – OSGi

• What else is going on with Mule? – Review

 – MuleForge

 – MuleIDE

Page 3: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 3/54

© 2006-2007 MuleSource Inc

What is Mule?

Page 4: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 4/54

© 2006-2007 MuleSource Inc

Overview

Page 5: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 5/54

© 2006-2007 MuleSource Inc

What is Mule ESB?

Page 6: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 6/54

© 2006-2007 MuleSource Inc

Mule 2 - Buzzwords

• “Service Container”• “Routing and Mediation Engine”

• “Runtime environment”

• “Light-weight, Embeddable”

• “Integration Platform”

• “SOA backbone”

• “Distributed ApplicationEnvironment”

Page 7: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 7/54

© 2006-2007 MuleSource Inc

Spring features in Mule

• Namespace Handlers – Schema based Configuration

 – Xml no longer contains framework class name

 – Much more descriptive

 – IDE / Editor friendly: code completion

• AOP Support – New validation and monitoring possibilities

• Improved Transaction Integration

• JDBC / DAO support

Page 8: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 8/54

© 2006-2007 MuleSource Inc

Namespace Handlers

• Mule 1.x Configuration

1 <connector name="jms" className="org.mule.providers.jms.JmsConnector"> 

2  < properties> 

3  < property name="specification"  value="1.1"/> 

4  <container-property name="connectionFactory" ref="myCF"/> 

5  < property name="useJndiDestinations"  value="true"/> 

6  </ properties> 

7  <connection-strategy className="o.m.p.SimpleRetryConnectionStrategy"> 

8  < properties> 

9  < property name="retryCount"  value="10"/> 

10  < property name="retryFrequency"  value="10000"/> 

11  </ properties> 

12  </connection-strategy> 

13 </connector> 

Page 9: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 9/54

© 2006-2007 MuleSource Inc

Namespace Handlers

• Mule 2.0 Configuration< jms:connector name=”jmsConn” useJndiDestinations="true">

  <property name="connectionFactory"><ref local="myCF"/></property>

  <mule:connection-strategy-retry retryCount="10" retryFrequency="10000"/>

</ jms:connector>

 – No class names

 – Properties are defined in the schema

 – Validation that the properties are set correctly

Page 10: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 10/54

© 2006-2007 MuleSource Inc

Using different modules (namespaces)

<mule xmlns="http://www.mulesource.org/schema/mule/core/2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xmlns:spring="http://www.springframework.org/schema/beans"

  xmlns:jdbc="http://www.mulesource.org/schema/mule/jdbc/2.0" >

  <jdbc:connector name="jdbcConnector1">

<jdbc:dataSource instance-ref=”ds" scope="singleton"/>

<jdbc:queries>

  <spring:entry key="get" value="SELECT ID, TYPE FROM TEST WHERE TYPE = ${type}"/>

</jdbc:queries>

</jdbc:connector>

. . .

<endpoint name=”jdbcEndpoint" address="jdbc://get?type=1”/>

<spring:bean id="ds" class="o.s.jdbc.datasource.DriverManagerDataSource">

<spring:property name="driverClassName" value="org.hsqldb.jdbcDriver"/>

<spring:property name="url" value="jdbc:hsqldb:mem:."/>

<spring:property name="username" value="sa"/>

<spring:property name="password" value=""/>

</spring:bean>

<mule/>

Page 11: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 11/54

© 2006-2007 MuleSource Inc

Configuration Repository

• Configuration canbe managedcentrally or perserver.

• Support for multiplerepositories.

• Mix and matchconfigurations fordifferent apps.

Page 12: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 12/54

© 2006-2007 MuleSource Inc

Under the Covers

• No more Mule Manager – Replaced by ManagementContext

• Better Lifecycle support

 – Registries manage object lifecycle

• Performance Optimization

• Improved QA

• OSGi Ready

Page 13: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 13/54

© 2006-2007 MuleSource Inc

Mule Streaming

• Allows services to consume very large events in anefficient way

• Event payloads are not read into memory

• Simple routing rules based on event meta-data stillpossible

• Can combine Streaming and non-streamingendpoints

• Support for Streaming Transformers… – on the todo list

• Streaming support in Mule 2: – SOAP, File, FTP, FTPS, TCP, SSL, HTTP and HTTPS

Page 14: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 14/54

© 2006-2007 MuleSource Inc

Streaming Example

<spring:bean name=”streamBean" class=”com.myco.MyStreamingComponent”/>

< model-streaming name="main">

  <service name=”fileTcpBridge">

<component instance-ref=”streamBean" scope=”pooled”>

  <inbound-router>

  <endpoint address="file://${mule.working.dir}/in"/>

  </inbound-router>

  <outbound-router>

  <pass-through-router>

  <endpoint address="tcp://localhost:34561"/>

  </pass-through-router>  </outbound-router>

  </service>

</ model-streaming>

• Streaming components are hosted in the streaming-model

• In Mule 2.0 the Streaming behaviour can be ‘discovered’

• Can mix non-streaming components by adding different component

models

Page 15: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 15/54

© 2006-2007 MuleSource Inc

Calling out to another service

• Using Java interface bindings

Page 16: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 16/54

© 2006-2007 MuleSource Inc

Nested Router Bindings

<mule:service name=”AmulzonService" implementation=”amulzonBean"><mule:inbound-router>

<mule:endpoint address=”stream://System.in"/>

<mule:endpoint address=“xfire:http://localhost:8081/services”/>

</mule:inbound-router>

  < mule:nested-router>

  < mule:binding interface="o.m.examples.amulzon.CreditChecker">

  < mule:endpoint address=”http://creditchecker.com/rest/Validate”/>

  </ mule:binding>

  </ mule:nested-router>

<mule:outbound-router>

. . . .

 public interface CreditChecker

{

public void validate(PaymentDetails pd) throws ValidationException;

}

Page 17: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 17/54

© 2006-2007 MuleSource Inc

Implementation

 public class AmulzonService implements BookstoreService {

   private CreditChecker creditChecker;

   public ProcessedOrder process(Order order) {

ProcessedOrder po = new ProcessedOrder(order);

  try {

creditChecker.validate(order.getPaymentDetails());

po.setSuccessful(“Order was processed sucessfully”);

} catch (ValidationException e) {

po.setFailed(e.getMessage());

}

return po;

}

// setCreditChecker(..), getCreditChecker()

}

< mule:nested-router>

  < mule:binding interface="o.m.examples.amulzon.CreditChecker">

  < mule:endpoint address=”http://creditchecker.com/rest/Validate”/>

  </ mule:binding>

  </ mule:nested-router>

Page 18: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 18/54

© 2006-2007 MuleSource Inc

Looking ahead

Beyond Mule 2.0

Page 19: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 19/54

© 2006-2007 MuleSource Inc

What is OSGi?

• Open Services Gateway Initiative

• Dynamic module system for Java

• A sort of Java OS

• SOA within your app!

Page 20: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 20/54

© 2006-2007 MuleSource Inc

Benefits of OSGi

Plug & Play!

Change parts of your app. dynamically withoutrequiring restarts

Components dynamically discover each other forcollaboration

Increased security: more isolation between modules of

your app.

Page 21: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 21/54

© 2006-2007 MuleSource Inc

Industry Support

• Plug-in model for Eclipse IDE (Equinox)

• Embraced by Spring

• IBM Websphere 6.1

• JSR 291: Dynamic Component Support for Java

 – Supporters: Apache, BEA, IBM, Intel, Nokia, Nortel Networks

Page 22: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 22/54

© 2006-2007 MuleSource Inc

Benefits of OSGi in Mule• Hot deploy your Mule app just like you would a WAR file, EAR

file, etc. in J2EE

• A Mule config can use different versions of the same class

• Update and restart a part of your running Mule instance without

having to restart all of it

• Dynamically configure Mule instances. Only load what isrequired.

Change Management

High Availability

Hot Deploy

Page 23: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 23/54

© 2006-2007 MuleSource Inc

Benefits of OSGi for Mule

• Separate class loader per bundle – not all of Mule has todepend on the same version of a 3rd party library

• Simple, tried and tested deployment model for Mule

Applications: Bundles

• Enabling technology for Patch Management in MuleHQ

Dependency Mgmt.

Patch Mgmt.

Deployment Model

Page 24: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 24/54

© 2006-2007 MuleSource Inc

How it works

• The Framework manages Bundles and Services:

Bundles – static libraries, may or may not be

startable/stoppable (via BundleActivator interface)

Services – dynamic components managed by a registrysimilar to JNDI

Page 25: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 25/54

© 2006-2007 MuleSource Inc

Bundles

• Each Mule module/transport is anOSGi “bundle” containing a specialmanifest file

• The bundle manifest declares:

 – Packages provided by this bundle (static)

 – Services provided by this bundle (dynamic)

 – Required/optional packages (static dependencies)

 – Required/optional services (dynamic dependencies)

• Both packages and services have a version associated

which is useful for change management

Page 26: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 26/54

© 2006-2007 MuleSource Inc

Lifecycle

• The framework manages bundles according to a well-

defined lifecycle.

Page 27: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 27/54

© 2006-2007 MuleSource Inc

Lifecycle

Audit Trail

Failover 

• The lifecycle state for each bundle ispersistent in case of a system crash or

restart

• The framework keeps a timeline of

each bundle's lifecycle events forsysadmins

• Bundles can be grouped into “run

levels” (like Unix services) and broughtup/down in a layered approach

Page 28: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 28/54

© 2006-2007 MuleSource Inc

Service Registry

• Mule bundles register their available services (connectors,transformers, components, etc.) in the OSGi Service Registry.

• A user's Mule app. then looks up the needed services from theRegistry and binds to them.

• Mule services may appear/disappear and consumers must reactaccordingly.

• This decoupling is what makes hot updates possible.

Page 29: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 29/54

© 2006-2007 MuleSource Inc

Spring OSGi

• Spring OSGi hides the details of registering andconsuming OSGi services, using sensible defaultswhere possible.

• Details may be given in a simple, declarative formwithin the Spring Beans config file:

 – cardinality of dependent services

 – handling of ServiceNotAvailable exceptions

 – timeouts

Page 30: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 30/54

Page 31: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 31/54

© 2006-2007 MuleSource Inc

What else is going on?

2007… so far 

Page 32: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 32/54

© 2006-2007 MuleSource Inc

Open Source Roadmap

Page 33: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 33/54

© 2006-2007 MuleSource Inc

Even faster adoption!

• Almost 800,000 downloads so far• User community growing (over 2000 developers)

 – Mule becoming popular in Asia and Australia

• Customers as well as users

 – Walmart case study on TSS :

“Mule can do everything the commercial ESBs can, at a lower TCO,it ’   s more complete than other open-source offerings like OpenESB, it 

complies with more standards (de facto or formal) than commercial 

products, and it ’   s ideal for preventing vendor lock-in .”

Page 34: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 34/54

© 2006-2007 MuleSource Inc

MuleCon

• First MuleCon event, San Francisco• 2 days, 150 attendees each day

• Training day

• 6 Customer Testimonials

 – Including Walmart, Scripps and H&R Block

• Finished off with pool and beer!

Page 35: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 35/54

© 2006-2007 MuleSource Inc

- Virtual Tax Services

• Created a virtual

network of TaxProfessionals

capable of serving

customersregardless of

location

Establish reusable framework for H&R Block office

integration

Real-time, asynchronous communications platform forall 13,000 offices

Page 36: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 36/54

© 2006-2007 MuleSource Inc

• Web scraping for RSS aggregation• Email sender listening to JMS for messages to be

sent

• Distributed search of Lucene indices

• Client of PA Sports Ticker

• Tasking Accucast via RMI

• JMX statistics aggregation and control

• Quartz scheduling - no more cron jobs!

• Tibco RV and Cocoon extensions now on

MuleForge!

- Mule Mash-Up!

Page 37: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 37/54

© 2006-2007 MuleSource Inc

- Powered by Mule

Page 38: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 38/54

© 2006-2007 MuleSource Inc

MuleForge

• What is it?

 – Mule community site

 – Launched 4th September 2007

• Why Contribute?

 – 58.3% of users build Mule extensions

 – Most Mule extensions are not mission

critical and may be useful to others -donate it!

• What’s there?

 – Over 40 projects hosted already

 – SAP, SalesForce, SIP, JCR, CXF, SMS,

Asterix, JavaSpaces, AMPQ

(RabbitMQ), … – Full project collaboration site

Page 39: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 39/54

© 2006-2007 MuleSource Inc

MuleForge 1.0

• Project Portal

• SVN and Fisheye

• Jira Issue Tracker

• Confluence Wiki

• Bamboo CI

• Mailing lists

• Maven 2• Release Mgmt

• RSS Feeds

• Next version

 – Knowledge base

 – Metrics

 – SSO – Contributed content www.muleforge.org

Page 40: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 40/54

© 2006-2007 MuleSource Inc

Mule IDE 2.0 - Eclipse

• Eclipse-based IDE

 – Current Mule 1.3

• Mule project wizard

• Example projects

• Runnable profiles

• In MuleIDE 2.0 – Drag n ’ Drop configuration

 – Extensible graphical palette

 – Xml Round tripping

• switch between graphicaleditor and Mule Xml

• No loss of structure orcomments

 – Extensible graphical editing

 – More project

wizards/templates

Page 41: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 41/54

© 2006-2007 MuleSource Inc

Product Releases

• Mule 1.4 Released in April

• Mule 2.0 milestone 1 Released in August

• MuleForge 1.0 Release in September

• MuleOnDemand 1.0 beta in September

• Mule 2.0 Release Candidate out in Q4 2007

• MuleIDE 2.0 out in Q1 2008

Page 42: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 42/54

© 2006-2007 MuleSource Inc

Awards

AlwaysOn Top 100

Page 43: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 43/54

© 2006-2007 MuleSource Inc

Any Questions…

for Captain Mule?

Page 44: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 44/54

© 2006-2007 MuleSource Inc

I’ll never have time

for these

Page 45: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 45/54

© 2006-2007 MuleSource Inc

Code Dive

Code Jump

Page 46: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 46/54

© 2006-2007 MuleSource Inc

Amulzon Bookstore

Page 47: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 47/54

© 2006-2007 MuleSource Inc

Mmmm… Code

• The AmulzonService is a POJO that implements an BookstoreService 

interface

 public interface BookstoreService {

   public ProcessedOrder process(Order order);

}

• The implementation (the POJO to be managed by Mule) looks like -

 public class Amulzon implements BookstoreService {

   public ProcessedOrder process(Order order) {

// do something with the order and return

ProcessedOrder po = new ProcessedOrder(order);

po.setSuccessful(“Orer was processed sucessfully”);

  return po;

}

}

Page 48: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 48/54

© 2006-2007 MuleSource Inc

Domain objects are the Messages

• Order.class – PaymentDetails

 – Customer Details

 – Ordered items

• ProcessedOrder.class

 – The Order – Success Message

 – Failed Message

Page 49: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 49/54

© 2006-2007 MuleSource Inc

Configuring the Amulzon Bookstore

 <spring:bean name=”amulzonBean" class="o.m.e.bookstore.AmulzonService”/>

<custom-transformer name=”StringToOrder" class=”o.m.e.bookstore.StringToOrder”/>

 <service name=”AmulzonService">

<component instance-ref=”amulzonBean" scope=”pooled”/>

  <inbound-router>

  <endpoint address=”stream://System.in” transformers”StringToOrder” />

</inbound-router>

<outbound-router>

<pass-through-router>

<endpoint address=”stream://System.out”/>

</pass-through-router>

</outbound-router>

</service>

Page 50: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 50/54

© 2006-2007 MuleSource Inc

Exposing as a Web Service

Page 51: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 51/54

© 2006-2007 MuleSource Inc

Exposing as a Web Service<service name=”AmulzonService">

  <component instance-ref=”amulzonBean" scope=”pooled”/>

<inbound-router>

<endpoint address="stream://System.in"/>

<endpoint address=”xfire:http://localhost:8081/services"/>

</inbound-router>

<outbound-router>

<pass-through-router>

<endpoint address="stream://System.out"/>

</pass-through-router>

</outbound-router>

</service>

The SOAP

transport

protocol

Expose the

Service to

localhost

Context for the

serviceThe SOAP

Service name

Tell mule to

use the XFire

Transport

Getting the WSDL

• http://localhost:8081/services/AmulzonService?wsdl

Page 52: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 52/54

© 2006-2007 MuleSource Inc

Calling out to another service

• Using Java interface bindings

Page 53: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 53/54

© 2006-2007 MuleSource Inc

Nested Router Bindings

<mule:service name=”AmulzonService" implementation=”amulzonBean">

<mule:inbound-router>

<mule:endpoint address=”stream://System.in"/>

<mule:endpoint address=“xfire:http://localhost:8081/services”/>

</mule:inbound-router>

  < mule:nested-router>

  < mule:binding interface="o.m.examples.amulzon.CreditChecker">

  < mule:endpoint address=”http://creditchecker.com/rest/Validate”/>

  </ mule:binding>

  </ mule:nested-router>

<mule:outbound-router>

. . . .

 public interface CreditChecker

{

public void validate(PaymentDetails pd) throws ValidationException;

}

Page 54: Mule Slideshow 1

8/8/2019 Mule Slideshow 1

http://slidepdf.com/reader/full/mule-slideshow-1 54/54

Amulzon Implementation

 public class AmulzonService implements BookstoreService {

   private CreditChecker creditChecker;

   public ProcessedOrder process(Order order) {

ProcessedOrder po = new ProcessedOrder(order);

  try {

creditChecker.validate(order.getPaymentDetails());

po.setSuccessful(“Order was processed sucessfully”);} catch (ValidationException e) {

po.setFailed(e.getMessage());

}

return po;

}

// setCreditChecker(..), getCreditChecker()

}

< mule:nested-router>

  < mule:binding interface="o.m.examples.amulzon.CreditChecker">

  < mule:endpoint address=”http://creditchecker.com/rest/Validate”/>

  </ mule:binding>

  </ mule:nested-router>