Skip navigation
1 2 3 Previous Next

SwitchYard

36 Posts authored by: Keith Babo
Keith Babo

Forge Updates

Posted by Keith Babo Apr 17, 2012

A few updates on the Forge front.

 

First, after an overly long stay on Forge Beta 3, we have upgraded our Forge support to 1.0.2.Final.  This also happens to bring us up to the current support level for Forge within JBoss Tools.  If you haven't tried out the Forge Console in JBDS yet, give it a shot.  You get the best of both worlds - quick bootstrap with Forge and powerful edit/build/debug support in Eclipse all in one package.  Forge 1.0.2.Final can be downloaded from the Forge docs page and our latest installer for the SwitchYard plugins can be found in the latest nightly build.

 

I also wanted to take a moment to thank Mario Antollini for his recent contributions to our Forge tooling.  He added two new commands for creating service references for an existing service implementation - a general command (add-reference) which updates the switchyard.xml and a specific command for CDI bean services (bean-reference).  This comes off pretty nicely considering you can go from nothing to a service implementation with a dependency on another service in two commands:

 

bean-service create --serviceName OrderService
bean-reference create --beanName OrderService --referenceName InventoryService

 

Gets you this:

 

@Service(OrderService.class) 
public class OrderServiceBean implements org.example.OrderService {

   @Override
   public void process(String content) {
        // Add processing logic here
    }

   @Inject
   private @Reference("InventoryService")
   InventoryService inventory;

}

 

None too shabby.

If you're interested in learning a bit more about the foundation for our runtime governance support in SwitchYard, check out this video:

 

https://vimeo.com/39697265

 

 

 

This is the first video we've recorded in 1920x1200, so please let us know if there's an issue with the resolution.  As always, viewing the HD version of the video is recommended.

Keith Babo

Design-Time Governance

Posted by Keith Babo Mar 29, 2012

One of the primary themes for our 0.4 release was governance and how we can support common governance capabilities at both design-time and runtime.  Governance is an incredibly broad domain, so we started with the basics.  In the case of design-time governance, this meant exploring the workflow and capabilities a user might want for interacting with a service repository.  The details are covered in the docs, but I find that seeing things in action is the best way to learn.  I have created a screencast based on our Repository Integration example, so if you like to see before you do, then here ya go.

 

BTW, I recommend watching the video in HD full-screen vs. embedded.  Both flavors included below.

 

https://vimeo.com/39381049

 

 

 

This is just the tip of the iceberg in our overall SOA governance support.  If you want to see where things will go from here, check out the Overlord project.

We took a little extra time with this one, but it was worth it.  A primary theme of 0.4 was how the ESB can be used in the context of governance, at design-time and runtime.  We're really happy with the progress we've made there and we're just getting warmed up.  In total, there were 105 JIRAs resolved in 0.4, so there's plenty in there beyond governance as well.  The juicy details can be found in the SwitchYard 0.4 Release Overview, which contains a list of all the new features with pointers to examples and documentation on each.

 

We have a sizeable backlog of videos we've been planning on everything from getting stuff installed, to feature profiles, to exploration of the more obscure aspects of the project.  So stay tuned and let us know what you think!

 

Cheers,

The SwitchYard Team

The good folks at mastertheboss.com have put up a brief interview with the SwitchYard team here:

 

http://www.mastertheboss.com/jboss-application-server/371-introducing-switchyard.html

 

Expect to see a lot more content rolling out as we are wrapping up 0.4.  We dropped CR1 last week and Final will be out next week.

Keith Babo

JUDCon India 2012

Posted by Keith Babo Jan 27, 2012

Just got back home from JUDCon India 2012 and all I can say is "Wow!".  Magesh and I gave a talk on SwitchYard and I also had a chance to participate in the developer panel at the end of day 1.  The entire trip was a fantastic experience, albeit a bit short.  I just checked and I spent about 49 hours traveling to and from India and only 72 hours in the country itself!  Here are my highlights of the trip:

 

  • This was my first time in India and I was really impressed by both the people and the fusion of culture and technology in the city of Bangalore.  Taxi rides were .. ehm ... exciting! ;-)
  • The conference itself was huge!  Huge venue, huge turnout.  Great to see that level of interest in JBoss technologies.  Conference producers (Saltmarch Media) did an excellent job.
  • Man, we (JBoss) are working on a lot of cool and diverse stuff.  It's tough to pay attention to everything we are doing in the community, so this was a great chance to get a quick rundown of what a lot of other projects are up to.  I was surprised to see how well Spring and CDI can integrate in Ray's talk.  The CapeDwarf work that Ales has been doing was completely new to me and very cool.
  • On the Monday before the conference, Magesh and I met to run through our presentation and we both came to the realization that there's too much stuff to talk about in a single presentation.  This is really a testament to how much our contributors have been able to create in SwitchYard in a relatively short period of time.  The upshot here is that you can expect us to grow Infinispan-style in future conferences, with multiple focused presentations on cool bits of SwitchYard.

 

All of the talks will be available for download and video will be available as well.

The JIRAs are closed, the bits are hosted, and the docs are ready to go.  SwitchYard 0.3.0 Final is ready to rock!  As always, we've created a summary of what's in this release with pointers to more info.  Check out the 0.3 Release Overview, take SwitchYard for a spin, and please let us know what you think!

 

Cheers,

The SwitchYard Team

A quick heads up that I have posted the presentations and lab materials from our recent SwitchYard workshops to our community space.  So if you want to learn a bit more about SwitchYard or just really like to review presentation slides, head on over and check it out.

 

http://community.jboss.org/wiki/SwitchYardWorkshop-Asia

Rob has created an initial version of a SwitchYard plugin for Eclipse.  Please note the emphasis on initial, since this thing is just getting started.  That said, I think it's already super valuable for SwitchYard developers because it wires us into the Eclipse build cycle via m2eclipse.  This means auto-builds and unit tests can be run directly inside of Eclipse and you still get the benefit our our service scanners and config generation (which are implemented as Maven plugins).  This feature alone is worth your time to install another plugin.  Read on if you want to give it a try ....

 

The plugin is currently available through the SwitchYard-Tools Jenkins build here : goo.gl/cIxYH .  From this link you can download the offline site archive (site_assembly.zip) or you can point directly at the following URL as an Eclipse update site:

 

http://hudson.jboss.org/hudson/job/SwitchYard-Tools/lastSuccessfulBuild/artifact/sources/eclipse/site/target/

 

That looks a little something like the following:

 

eclipse-tools.jpg

 

Rob has added a couple more features beyond the build lifecycle integration, so hopefully this will serve as bait for him to discuss them in greater detail. :-)  Between Forge and JBDS, I think we have the foundation for a great tooling story in SwitchYard.  Stay tuned.

Forge is pretty darn cool.  If you haven't had a chance to play with it yet, it's basically a command-line framework for creating applications.  There are a couple things I really like about Forge.  First, it's quite pluggable, so it's easy for developers to create new tooling that integrates seamlessly with the Forge environment.  Second, it dramatically speeds up the process of creating a new application for users.  I used to use Maven archetypes quite a bit to create new applications from a template definition.  The one drawback with this approach is that the new application is static - you only get what you created from the template.  Forge allows you to add behavior and functionality to an application after it's created - stuff like project dependencies, configuration and code generation.  We use Forge quite a bit within SwitchYard, so I thought it would be interesting to share an example of how Forge can be used when creating SwitchYard applications. 

 

Check out the video and let us know what you think.  Musical accompaniment appears to be a requirement for Forge videos, so I've added a classic tune to the audio track on the vid.

 

BTW, I recommend watching the video in HD and full-screen mode so that you can actually see what's going on. :-)  Click here for a direct link to the HD version.

 

 

The SwitchYard community is proud to announce the arrival of our 0.2 release.  Sure, there's loads of exciting new features, but we also benefited from great feedback and contribution from our community after the 0.1 release, which allowed us to improve on existing features as well.  Be sure to check out the Release Overview for a summary of what we've delivered and directions on how to get started with SwitchYard.

Even though SwitchYard is a new project, we have already enjoyed fantastic support from our community.  Prior blog posts have highlighted the initial support for Camel and the addition of a JSON transformer.  For this community spotlight post, I want to point out some work that Mario Antollini has done w/r/t Camel configuration.

 

Camel supports a wide array of components which accept configuration as a URI.  For example, the following URI configures the Camel File component to consume files from the "/tmp/input" directory:

 

file:///tmp/input

 

You can't get much more convenient than that.  This is one of the features that makes Camel such a joy to use.  There are a couple of things to watch out for with URIs though.  First, some components in the Camel community support a ton of config options.  Let's take another look at a file config URI that uses a few more options:

 

file:///dev/inbound/purchaseOrders?autoCreate=false&bufferSize=1024&initialDelay=10&delete=true&readLockCheckInterval=1000&startingDirectoryMustExist=true&include=*.txt

 

The above config is a bit chattier and presents two potential challenges:

1)  It's getting tough to parse with the naked eye, which makes reading or updating the config string a bit more error prone.

2)  Validation in tooling is a challenge because we don't have a definition of which settings are allowed and what values those settings can take.

 

One way to address this is to define a schema for the component configuration and use that to structure the config parameters and validate them.  Here's the same config URI represented as a gateway binding config:

 

<binding.file xmlns="urn:switchyard-component-camel:config:1.0">
   <operationSelector operationName="someOperation"/>
   <targetDir>/dev/inbound/purchaseOrders</camel:targetDir>
   <autoCreate>false</camel:autoCreate>
   <bufferSize>1024</camel:bufferSize>
   <consume>
      <initialDelay>10</camel:initialDelay>
      <delete>false</camel:delete>
      <readLockCheckInterval>1000</camel:readLockCheckInterval>
      <startingDirectoryMustExist>true</camel:startingDirectoryMustExist>
      <include>*.txt</include>
   </consume>
</binding.file>

 

Mario has added configuration model support to parse, create, and validate a number of Camel component configs and more are being added.  If you prefer the straight URI route, then that option is still available as well through the base camel binding configuration:

 

<binding.camel configURI="file:///tmp/input">
    <camel:operationSelector operationName="print"/>
 </camel:binding.camel>

 

Thanks Mario!

The SwitchYard team is happy to announce the arrival of our first release - 0.1!  You can read all about it in the Release Overview, which provides a summary of what's in 0.1 along with links to detailed information on the features in the release.  Take SwitchYard for a spin and let us know what you think.

SwitchYard community member Alejandro stepped up with a big contribution this week with a JSON transformer.  Like the existing Java and Smooks transformers, JSON transformers are declared in an application configuration and automatically wired into the SwitchYard bus at runtime.  Here's an example definition:

 

<transform.json 
            from="{urn:switchyard-quickstart:transform-json:1.0}order" 
            to="java:org.switchyard.quickstarts.transform.json.Order"/>

 

The JSON transformer takes advantage of the fantabulous Jackson library to map between Java value objects and JSON with ease.  If you would like to see the transformer in action, check out the transform-json project in our Quickstarts repository.

 

Rumor has it that Alejandro will be submitting an XSLT transformer in the near future as well.  Thanks Alejandro!

Keith Babo

Friday Rewind

Posted by Keith Babo May 27, 2011

It's Friday, which is a great time to reflect on what's happened in the last week ... month!  Holy smokes it's been a long time since we've blogged.  The good news is that we haven't been resting on our laurels.  Our very first release, 0.1, is just around the corner.  No more features or enhancements left - at this stage we're just banging on what's there and fixing any bugs that fall out.  We've made quite a bit of progress from M1 in March.  An exhaustive list of what we've done can be found here and the (thankfully small) list of what remains here.  We will be posting updates and feature details on the blog over the next two weeks, so stay tuned.

 

BTW, if you couldn't make it to JBoss World this year to catch the SwitchYard session, don't despair.  Slides are available online.  :-)