SwitchYard Release Overview - 0.6

Version 7

    Welcome

    Thanks for stopping by to check out SwitchYard.  This article provides a brief summary of what's inside SwitchYard 0.6.  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.6 release below.  For complete information on all SwitchYard features, check out the docs.

    Policy 1UP

    Security and transaction policy leveled up in 0.6, big time.

    • Security policy now supports delegation of an authentication decision to an external security provider.  Coupled with our new integration with PicketBox and PicketLink, you now have the ability to accept SAML tokens in a message for authentication.  We also provide a basic authentication provider if you want to extract credentials from other parts of a message (e.g. request headers).  Check out the policy-security-sslsaml and policy-security-sslbasic quickstart demos for examples.
    • New transaction policy capabilities include the ability to start a new local or global transaction around a service and defining transactions semantics for service references (e.g. suspend the current transaction when service A invokes service B).
    Clustering

    Support for clustering of SwitchYard instances has been added using a federated runtime registry based on Infinispan and an HTTP-based internal communications channel between instances.  Check out the clustering docs page for more detail.

     

    RemoteInvoker

    Cousin of the ServiceInvoker in JBoss ESB, the RemoteInvoker allows standalone clients to remotely invoke services in SwitchYard through a simple API.  Information on RemoteInvoker can be found here.

     

    Gateway Style

    We added two HTTP-based gateways to the runtime in this release along with Forge and Eclipse tooling support:

    • RESTEasy : Use JAX-RS annotations and the super awesome RESTEasy framework to provide and consume RESTful web services in SwitchYard.  Check out the rest-binding quickstart to see this gateway in action.
    • HTTP : Sometimes you just want an HTTP pipe with no fancy stuff and that's what the HTTP gateway provides.  Integration with JBoss Web means your services can run on the existing managed http listener in JBoss AS 7.  Check out the http-binding quickstart to see this gateway in action.
    Dynamic Operation Selectors

    When your service is exposed over a binding that does not natively support encoding of the operation name, you need a way to specify that in the SwitchYard configuration.  Up until now, it was a string literal that identified a single operaiton for a binding.  Now in 0.6, you can use XPath, Regex, or a custom Java class to inspect the inbound message and identify the operation that will be invoked.

     

    Rules and BPM Enhancements
    • The Rules component now supports inserting multiple fact objects into the rules session, having been extracted from the Message, Exchange or Context using MVEL expressions.
    • The Rules and BPM Components now support registration of EventListeners.  This can be for working memory or agenda auditing, Business Activity Monitoring, or custom purposes.
    • The BPM Component now supports event data for signaling processes to come from the Message content.
    • The BPM Component's SwitchYard Service TaskHandler can now be configured with two different fault-handling strategies: one for feeding conditional gateways, the other for signaling events.

     

    Camel in the Core

    We have added a Camel implementation for our message bus SPI which means every service interaction is flowing over a lightweight Camel route behind the scenes in SwitchYard.  This provides some really interesting possibilities for extension and customization for SwitchYard users.  One example would be the new interceptor feature which allows you to intercept and act on a message as it moves through the runtime processing pipeline.  This is great if you want to sprinkle in some auditing code or assert very specific behavior in a SwitchYard unit test.   The Camel version in SwitchYard has been bumped to 2.10 as part of this effort and we have moved to Apache DeltaSpike for our Camel/CDI integration layer.

     

    Quickstarts Now 30% Quicker

    Building and unit testing our quickstart applications was already pretty darn easy ("mvn package"), but we got two contributions this release that make it even easier.

    • All quickstarts can now be deployed to JBoss AS 7 via "mvn jboss-as:deploy". 
    • Most quickstarts now support sending a request message to a remote deployment with "mvn exec:java".  Each project contains a test client class that you can modify as you see fit and continue to run with "mvn exec:java".

     

    Check out the bean-service README for an example.

     

    More Tooling

    We introduced our Eclipse-based visual application modeler in 0.5 and have devoted a significant amount of time in 0.6 to enhance the functionality offered there.  Some highlights:

    • Streamlined service and reference promotion workflow and transformer definition.
    • You can now create validators in addition to transforms.
    • RESTEasy and HTTP binding tooling added.
    • Support for declarative policy - transaction and security.
    • New icons!!!
    • Enable message tracing for an application.
    • Semantic and syntactic project configuration validation.

     

    Service Monitoring in Admin Console

    Our runtime monitoring console integrated with AS 7 picked up two new features due to popular request:

    • Operation-level metric collection and drill down - you can now get detailed metrics for each operation on a service.
    • Performance "hotspot" view - the service view for an application and the runtime is now sortable by response time metrics.