The bits for SwitchYard 0.4 CR1 have been posted to our Downloads page. Here's a quick rundown of the highlights for 0.4 CR1 (87+ resolved JIRAs). We should have Final out within 7-10 days, just enough time to squash some remaining bugs and update 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. More detail can be found in the repository integration write-up and our multiApp quickstart. 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.
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 validate-xml quickstart for an example. From requirement to implementation, this was an awesome example of open communities in action.
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. I still think it's shiny and new because the integration also gives us a new L&F, which is really nice.
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).
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.
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. See camel-soap-proxy and rules-camel-cbr for examples to see this in action. As always, if you have an example that you would like to see, please post a request on the forum or file a JIRA.
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.
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.
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.
We now have 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.
We bumped the JBoss AS version to 7.1.0 Final and this will likely move to 7.1.1 between 0.4 CR1 and Final. In addition, the JBoss WS stack is now used as our default web services provider instead of the JDK JAX-WS provider.
If you have a chance, please download the bits and play around a bit.