Archive for April, 2008

Integration with Mule RESTpack Webinar

Wednesday, April 16th, 2008

I’m doing a webinar next week Tuesday (April 22) on Mule and REST. I’ll be giving an overview of the concepts of REST, how things like scalability/evolvability emerge from the constraints of REST, and how you can build RESTful applications with Mule.

If you’re interested in attending, the signup is here. Hope you can make it!

The Fairies Live: Spring Security 2.0 is out

Wednesday, April 16th, 2008

Spring Security 2.0 final is out. It looks like a great step forward! I’m looking forward to upgrading Galaxy to it when I get chance.

Guess I’ll have to talk about other projects killing fairies now.

(Also, thanks to Ben Alex and the other Spring guys for having a good sense of humor about my original post. I didn’t expect the meme to live quite this long…)

Apache CXF graduates

Tuesday, April 15th, 2008

Its hard to believe that its been 20-some months since we originally started merging XFire and Celtix.

In this space of time the project has:

  • Released a number of milestones
  • Released five highly stable 2.0.x releases
  • Implemented many different WS standards
  • Provided an easy migration path for XFire users (with some minor exceptions - most notably JiBX users still need to be catered to)
  • Passed the JAX-WS 2.0 TCK
  • Embarked on JAX-WS 2.1 and I believe there will be a 2.1 CXF release very soon which implements this.

How time flies - I can’t believe its been 4 some years since XFire was started in my spare time. I think this was my first commit of the StAX incarnation, but it started a few months before that.

Alright, enough gratuitous self-reflection. Thanks to all of those in the project who helped us get this far and looking forward to seing where we can go in the future!

Fring

Monday, April 14th, 2008

Sweet: I just made a call on my iPhone over my laptop’s adhoc wifi connection and in turn over my 3G Verizon connection.

Update: bonus, it works with my Vonage account as well. No more calling through the laptop unless I want to when travelling internationally.

OpenSource Skunkworks

Sunday, April 13th, 2008

Jonathan Schwartz:

The CIO responded categorically with “we don’t run MySQL, we run [name withheld to protect the proprietary].” The CISO said, “We can’t just let developers download software off the net, you know, we’ve got regulation and security to worry about.” The CTO smiled. Everyone else appeared to be sitting on their hands. I was going to leave it at that. Thanks for the business.

Until a (diplomatically) assertive Sun sales rep piped up, “Um… no, I connected with a buddy of mine over at MySQL, and had him check - you’ve downloaded MySQL more than 1,300 times in the last twelve months.”

One of the great open source business questions seems to be - how do you turn these downloads which nobody but the developers know about and convert them into sales?

P.S. Does anyone think of this clip ever when hearing Jonathan’s name?

Talks: The Rise of AtomPub in the Enterprise

Sunday, April 13th, 2008

I’m doing two talks in the coming months on the rise of AtomPub - one at Jazoon in June and a BOF at JavaOne in May.

Its interesting to watch AtomPub work its way through the enterprise a bit. I’m hearing many reports of people who have AtomPub services in production, people are building services, and those who are evaluating it.

If you’re using AtomPub for your company, shoot me an email. Its nice to learn from other experience beside my own and spread the wealth of knowledge about how to use APP.

Abdera 0.4.0 Released!

Sunday, April 13th, 2008

After many months of refactoring and much incubator pain (I now understand the rules to get a release out of the incubator - at least until they change next week ;-)) - the Abdera 0.4.0 release is out!

I’m pretty excited about this. I’m hoping it’ll enable developers to build AtomPub services much more easily. Which means we could see a lot more AtomPub servics crop up. I’m already hearing from people inside big enterprises who are developing their services using AtomPub instead of a custom RESTful service or SOAP service.

This also sets us on the road to 1.0 and graduation. I have two things on my list for 1.0. First, I’ve written a small XHTML databinding thingy using XStream. We don’t quite have the proper hooks in Abdera though. Second, I would to ensure that the ManagedProvider (i.e. the out of the box adapters for JDBC, JCR, Filesystems, etc) work well with the Spring configuration.

Update: please check out the wiki for documentation. We’re in process of revamping the website.

Mule 2.0.0 final and the new transformation engine

Thursday, April 10th, 2008

After quite a wait, Mule 2.0 final is out. Its a pretty big step for us, our users, and our customers. Check out the Whats New page for a rundown of everything. Its a significantly improved release - its much cleaner and easier to use.

Since its Friday and I can’t stare at my IDE any longer, I want to give a quick rundown of the transformation engine which was the primary thing I worked on.

Having implemented two web services frameworks (two more than anyone should ever write), I was getting quite familiar with some of the problems around dealing with XML efficiently. We have many many different representations: DOM, SAX, StAX, bytes[], streams. Applications may work with a variety of these formats as inputs/outputs. Finding the most appropriate match is a difficult one.

A good example of this is where you have one component which can output SAX, DOM, and StAX and another which receives only DOM. When the first component is sending a message, how does it know what to send?

The key was to implement an on demand payload request mechanism. The API is actually similar to what I did with CXF (surprise), but it goes one step further and hooks in the Mule transformation engine. Here’s an example of what the second component would look like.

MuleMessage inputMsg = ...;
Document doc = (Document) inputMsg.getPayload(Document.class);

Quite simple - we’re simply requesting the payload as a Document type. Mule allows you to actually delay any decisions about how to serialize it until getPayload is called. Or you can go down the more traditional route of just choosing some format to send and then have a transformation. i.e. send a SAX stream and convert it to a Document on demand.

As an added benefit, transformations are now automatic - no more manually specifying transformers unless you want to. Mule will use its internal registry of transformers to determine how to best match two components together.

And this concludes our adventure in the world of messaging! If you read this blog entry, you’re probably either sick or are a competitor ;-)