Thursday, July 06, 2006

ApacheCon Europe06

Generally this was a good conference. I only went for one day to see the web services stuff. This track was managed by WS02 (which were one of the conferences sponsors). Most of the talks were a good level. Here's my impressions of the things I attended.

Keynote Wednesday Morning: Open Source 5 years ahead.

ZZZzzzzz... boring. Focused on challenges to open-source. Nothing new. Could have given this talk 5 years ago.

Woden WSDL 2.0 Processor

New API's from the people who brought you WSDL4J (WSDL 1.1). Talk was interesting from the brief overview of WSDL 2.0. WSDL 2.0 is not compatible with WSDL 1.1. - refined semantics, new grammar elements. Going to be a nightmare for everyone involved. I wonder where the push is going to come to upgrade to WSDL 2.0 (sure all the vendors will love it, but will people stubbornly keep writing to WSDL 1.1 (a ala HTML/XHTML split)?

Anyway some nice things about WSDL 2.0:
  • Pluggable type system (ok nice but weeny).
  • Message Exchange Patterns (MEP's) clean-up the interaction patterns between communicating parties, e,g, in-out, robust-in-out (i.e. faults allowed).
  • Operations reference elements directly (no Messages and RPC-literal consigned to an extension element).
  • Slightly less verbose through the use of properties, rather than embedding the extension elements directly.
The Woden API's are familiar enough if you know WSDL4J, but they are a work in progress (read but not write), but they do have semantic validation (which will be a big help).

REST in Peace - Web Services with Axis2

This showed how Axis2 can be used to expose web-services with HTTP GET/POST bindings meaning that you can send POX (Plain Old XML) direct to Axis2 and get it to process it as if it were SOAP (by the trick of wrapping it in a SOAP envelope when it arrives). This isn't that exciting for us (Cape Clear has been able to do this for some time) - but the implementation seems pretty good (you can mix both GET and POST or just use one or the other) and the standard of the talk was high.

I think they said that the default configuration for the server means that any web service deployed is automatically deployed as a REST style service, which seems (a) just a little dangerous from a security/auditing point of view and (b) unless it's adding bindings dynamically to the "?wsdl "- effectively a publicly accessible but undocumented endpoint.

Apache Synapse


I thought this was the best talk of the day. Apache Synapse is a thin layer on top of Axis2. They call it an ESB. I'm not sure I agree, but that's immaterial really: Apache Synapse is kinda cool. It basically can support a number of functions
  • As a Gateway - to allow mediation between protocols (e.g. HTTP-REST in - WS-RM out)
  • As a Router - on the basis of rules - route to different services / act as a proxy.
  • As a Mediator - transform incoming messages
It does this through a simple language which it uses to tell it how to handle messages. The language consists of the following statements on messages. send, drop , log, xform (transform e.g. XSTL), filter, header, valdiate, script (execute a script), switch, mediate (they have pluggable mediators).

One of the nice features it that it uses AXION the object model from Axis2 that can use STaX-based pull-parsing to parse the incoming message - so it can operate quite fast. This combinded with the footprint of the Synapse jar (around 300K) means that you can really see synapse working well within small fast devices or edge / customer-premises devices, basically a fast XML content-based router. There are a lot of problems that this kind of routing is suited to and this seems like a pretty nice solution.

WS-ReliableMessaging with Sandeesha2

This was also a good talk, although pretty poorly attended (I guess people just don't care about WS-RM). Anyway, the Sandeesha2 implementation seems pretty nice, but perhaps for a WS-RM implementation a little too dependent on Axis2 (through the handler declaration - would be nice to see something more abstract that doesn't depend directly on the INFLOW/OUTFLOW pipe definition within AXIS2). We don't use Axis2 in here as part of our product and in the future we may wish to upgrade to support JAX-WS (now I know that IBM has contributed JAX-WS on Axis to Axis2, but I don't actually know what's happening with this contribution). Anyway, we would like have the option of using Sandeesha2, but if it's too intertwined with Axis2, that could present difficulties for us. 

Sandeesha2 also implements Full WS-RM 1.0 and CD3-level WS-RM 1.1. It has been shown to interoperate with both Microsoft's Indigo WS-RM and and BEA's WS-RM.

They have implemented two storage mechanisms: inMemory (ok useful for testing) and one implemented on hibernate/Derby. To date there hasn't been any load testing and I would suggest that when they do they choose a real database MySQL, Postgres or Oracle for the purposes of load-testing- no one will want to base their persistent store on Derby (certainly commercial companies will want to know it's been tested on a commerically supported database).

0 Comments:

Post a Comment

<< Home