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.
There a number of options for checking out what SwitchYard has to offer. Listed in order of increasing time investment:
- Read the rest of this article. It provides an overview of the new features in 0.6.
- Check out the Getting Started and User Guide to find out more about all the features in SwitchYard.
- Download and install the SwitchYard 0.6 release.
- Take a gander at our Quickstart applications. Run them as is and see SwitchYard in action. Or change some stuff and see what blows up.
- Build an application from scratch using our super slick Eclipse and Forge tooling. Here's an easy-to-follow guide for creating your first app from Eclipse.
- Build SwitchYard from source and contribute!
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.
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).
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.
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.
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.
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.