Service Creation

Constructing Web APIs with Rack, Sinatra and mongoDB

Update: Ok, speaker notes have turned up at this point! Also, @matthutchin did a bang-up job of editing some moody video and sound of the talk into this video+slides presentation!
Update: Still no sign of the speaker notes on Slideshare  - here’s a bit of ruby to grab them from the slideshow and format them into an HTML page: https://gist.github.com/968161.
This the talk I gave at the Ruby Ireland meetup last night. I think it went over well - there’s plenty of interest in the plethora of non-SQL style databases, but the problem is over population of choice and the amount of time investment required before you can make a properly informed decision. I think the best approach is to try to find as many testimonials from companies that have incorporated these newer technologies into their data storage arsenal, and read them thoroughly. These will epitomise the (fleeting) state of the art.

In an ideal world, there would be a group of volunteers running a funded lab that can create independent assessments of all the different approaches and products.

The slideshow can be found on Slideshare; Code for the sample application can be found on GitHub. Code pull requests welcome!

[slideshare id=7912053&doc=ruby-ireland-may-11-110510111623-phpapp02&w=400&h=334]

Announcing: FUSE Integration Designer 1.2

Phew. It’s out the door. FUSE Integration Designer 1.2 is now available for download.

This release follows on from a couple of preview releases that we ran to gauge our approaches and get feedback. And we got plenty of it, in all flavours.

You might already know what FUSE is about - it’s four popular Apache projects (ActiveMQ, Camel, CXF, ServiceMix), bundled together into a single offering with subscription-based support from Progress Software. These four projects bring together capabilities around messaging, Web services, message mediation and the ESB concept, the idea being to give you a grab-bag of goodies that make sense when you are trying to solve integration problems.

As you might imagine, it’s an interesting task to put together a toolset that lets you blend these technologies in way that can suit every integration issue. In our preview versions, we concentrated on visualization and debugging of Camel routes and creation of Web services. I think the first thing we learned was that users tended to hit the limits of the tool far too quickly - the routes, for example, had a limited set of capabilities that was outstripped by what Camel had to offer. So we concentrated on making sure that the tool could handle any (1.5 or 1.6) route configuration you could throw at it. Let me know if you break it :)

We also filled in some glaring holes in the preview - you can now deploy your Web services to ServiceMix 3.x and ServiceMix 4.x containers, for example, and we have put in some tools that will let you rummage around inside your ActiveMQ message broker, introspect the queues and topics, inject messages for testing and snoop on messages that are going by. You can save and reload your state too, so it’s possible to set up and share a set of messages and configurations for testing or joint review.

There’s more, of course.

The previews were delivered solely as an Eclipse update site, which could be a bit of a bear to interact with. This time around, you download zip files that have everything - Eclipse core, dependencies, FUSE code, the works. They are big ok, but it means that you get everything in one swoop. There’s online help in there, and some cheatsheets to get you started.

Try it out - download is here, forum is here - and let us know what you think.

What next? The radar is moving on to things like JAX-RS tooling, Camel 2.0 support (runtimes go faster than tools, that’s why they are called runtimes, natch), getting a deep integration with m2eclipse and such like other tasty treats. If you’ve got a hankering for anything particular, let it be known in our tools forum.

By-the-by, since we are all Twittertastic these days, you can get more FUSE news by subscribing to @fusenews or indeed subject yourself to my edgy waffling at @oisin.

Developing Web Services with Eclipse and CXF

Update:This is the most searched-for entry on my blog, and I have to warn you it is WAY OUT OF DATE! So skip it - and someday I’ll write an update and link it from here…

I’ve seen more than one instance of people scratching their heads over the CXF tools in the Eclipse STP project, so it was time to go back to the drawing board and take a new approach. Now we’ve finished our first cut of what we think service creation tools should look like, we would like you to check them out and tell us what you think.

What have we done differently? Well, the code is now completely based on Eclipse WTP frameworks, rather than having only a passing integration with them. If you’ve ever done Axis2 web service development with Eclipse, then you should be able to get familiar with this really, really quickly. You can create CXF web services from WSDL, or from a Java class or interface. The tools support selection or extraction of an SEI if you are starting from a class. JAX-WS annotations get added automatically, and you set preferences on how you would like them to be defaulted. And to help with getting those annotations right, we’ve added some validation - you’ll get error markers if you incorrectly combine annotations.

If the alphabet soup in the previous paragraph has made you sleepy, a few examples of the tools working might help to perk you up. Check the silent movies.

So, where can you get the code? For a start, we’ve bundled it in the FUSE Integration Designer Preview. We’ve also decided to contribute the code to the Eclipse WTP project, where it can be warm and cosy and be accessible for all. You can find the proposal for the WTP Incubator attached to Eclipse bug #248630. Also attached to that Eclipse bug is a zip file that contains the plugins you need to get running. Unzip this into your eclipse directory, restart your workbench and you should be good to go.

Try it out and let me know how you got on. You can leave feedback here on this blog, add a comment to the Eclipse bugzilla, send an email to users@cxf.apache.org (best place right now), or drop in on the FUSE Tools Forum.

Release the Hounds!

Or, in this case, the incubating projects. Apache Yoko incubator has published an M1 release. Yoko (no, I don't know why it's called that) is a fast Java CORBA server which can be used in Open Source JVM and JEE implementations. Hot on it's heels, it looks like the Apache CXF (yes, I know why it is called that - don't ask) is gearing up to an imminent 2.0-M1 release. CXF should be very interesting to people who are doing JAX-WS service development - I have been using it myself in another project and it has worked very well.

Back in the SOA Tools Platform project we're adding UI support for JAX-WS service development and we are testing against CXF to make sure that we are generating the correct classes and dealing with the JAX-WS and other annotations in the right way.