Version 4


    Thanks for stopping by to check out SwitchYard.  This article provides a brief summary of what's inside SwitchYard 0.4.  If you are completely new to SwitchYard and wondering what it is, this blog post provides some good background and pointers to additional information.


    Getting Started

    There a number of options for checking out what SwitchYard has to offer.  Listed in order of increasing time investment:


    Feature Highlights

    You can find a summary of the new features in the 0.4 release below.  For complete information on all SwitchYard features, check out the docs.



    This was a primary focal point for us in 0.4.  We wanted to explore the touchpoints between SwitchYard and both design-time and runtime governance.  What you will find in 0.4 is a preliminary, but functional realization of that exploration.  The work on design-time governance centered around integration with a service repository and how service artifacts can be shared across multiple applications during development and runtime.  For runtime governance, we focused on collecting and exposing service metrics through the AS7 CLI and admin console.  We have some great ideas on where to take this next, but we feel that there's enough there now to get some feedback on whether we're headed in the right direction.


    You can see this feature in action in the multiApp quickstart and Repository Integration example.   More detail can be found in the Governance section of the docs.  There's a cool video now too!


    Message Validators

    Validators are an interesting twist on our declarative transformation support.  An attendee in one of our Asia workshops liked the way declarative transformation allowed you to externalize message transformation from your service implementation logic, but wondered why we didn't have the same capability for message validation as well.  It was a great idea and I'm happy to report that we now support declarative message validation in 0.4.  SwitchYard community member and developer Tomohisa Igarashi took this requirement and ran with it and the resulting implementation is pretty slick.  Basically, you can add a validator for any message type (XML, JSON, Java, etc.) to your application and it will be invoked any time a service is invoked with a message of that type.  See the  quickstart for an example.  From requirement to implementation, this was an awesome example of open communities in action.


    You can see this feature in action in the validate-xml quickstart.   More detail can be found in the Validation section of the docs.

    Shiny New Admin Console

    Well, it's actually the same console from before, but now it's completely integrated into the AS7 admin console.  This means you don't need to access a separate application for SwitchYard admin and monitoring details - it's right alongside the rest of the AS7 stuff.  It also has some shiny new features, like integrated Look & Feel with AS7 (looks great!), support for viewing and tracking service artifact metadata, and a new runtime profiling section which reports service metrics.


    Best way to experience this feature is to fire up a SwitchYard instance, deploy an app, and go to http://<hostname>:9990 to check it out.  Additional coverage of what's in the console can be found in the Management Console section of the docs.


    BPM Task API

    A new API has been introduced for interacting with human tasks in BPM-based services.  The goal of this API is to make it significantly easier for SwitchYard developers to interact with human tasks, particularly in cases where a web application provides a human interface to a workflow.  The API supports starting and stopping a task server, connecting to an existing task server, and query/manage task instances.


    You can see this feature in action in the helpdesk-webapp quickstart and the associated walkthrough video.  More information can be found in the Human Task API section of the docs and this blog entry.


    REST Gateway based on JAX-RS

    There's a new REST gateway for providing and consuming RESTFul web services in SwitchYard.  The gateway uses JAX-RS interfaces to configure a resource view for service and reference bindings.  The initial implementation of this feature uses the CXF RS component in Camel.  In 0.5, we plan to introduce a full-blown REST gateway component based on RESTEasy.


    You can see this feature in action in the camel-rest-binding quickstart.


    Spotlight on Common ESB Use Cases

    Content-based routing and service proxying are two common requirements for an ESB, so we've added quickstarts to show how these can implemented in SwitchYard.    As always, if you have an example that you would like to see, please post a request on the forum or file a JIRA.


    See camel-soap-proxy and rules-camel-cbr for examples to see this in action.


    BPEL Improvements

    The BPEL implementation in SwitchYard continues to see significant upgrades courtesy of the Riftsaw project.  The 0.4 release now includes an option to install the BPEL console in SwitchYard so that you can view and manage deployed BPEL processes.  Also added: support for databases other than H2, configuration of the engine through AS7 standalone.xml, and a new quickstart demonstrating correlation.


    Detailed information can be found in the BPEL Console and BPEL Database sections of the docs.


    Synthesized Service Interfaces

    All services must have an interface in SwitchYard.  In most cases, this is easy to do as you already have the interface available (e.g. Java interface for Bean/CDI services, WSDL interface for BPEL service) or it's easy and prudent to cook one up.  That said, there are times when you don't want to create another file that needs to be managed just to supply configuration to the SwitchYard runtime.  To handle this case, we have added support for 'synthesized interfaces', which is just a fancy name for specifying the input/output/fault types directly in the SwitchYard configuration vs. creating a separate file which contains that information.  The new interface type is called interface.esb.


    The camel-service quickstart has been updated to demonstrate the use of interface.esb.


    Test Improvements

    We really want SwitchYard developers to test their applications, so we continue to improve our test support in each release.  The 0.4 release contains some nice upgrades to the HttpMixIn (dump request/response, manipulation of HTTP headers) and the HornetQMixIn (embedded and remote modes, suport for authentication).


    WSDL interface support for Camel Gateways and Routes

    Starting in 0.4, you can use WSDL interfaces to declare the service contract for Camel gateway bindings and routing services.  This is actually pretty handy and definitely saves time when you already have a WSDL contract for your service that you want to reuse.


    Check out the bpel-jms quickstart for an example.


    Tooling and Runtime Updates
    • Eclipse : added a SwitchYard project facet, so any Eclipse Java+Maven project can be SwitchYard-enabled with a few clicks.  There's also a SwitchYard properties page which gives you fine-grained control over which SwitchYard capabilities are added to your application, including the ability to reference service artifacts stored in a service repository.
    • JBoss AS : version bumped to 7.1.1 Final.  In addition, the JBoss WS stack is now used as our default web services provider instead of the JDK JAX-WS provider.
    • Forge : new commands for adding a service reference to an existing implementation (add-reference) and linking a service artifact module to an application project (import-artifacts).
    • OpenShift : The SwitchYard Forge facet automatically recognizes OpenShift applications in 0.4, so you can turn any OpenShift application using the AS7 cartridge into a SwitchYard application by simply installing our facet.