Archive for the 'wsaddressing' Category

Web Services Feature Pack eGA

It’s a happy, sunny afternoon in the few meters around me (I’m ignoring the rain flooding the rest of the country) because today output of the project I’ve been focussed on for the last 12 months was published. (or in IBM terminology it achieved ‘electronicGeneralAvailability’).

The Web Services Feature Pack for WebSphere 6.1 includes new support for a bunch of web services standards, enabling new levels of reliability, security, asynchronicity and consumability for WebSphere users (and those trying to interoperate with them).

It’s been a really interesting project, including lots of distributed working, open source activities, interoperability testing, and some long days, but at the end of it I’m happy that we’ve managed to combine new web services standards and existing WebSphere ‘value-add’ technologies to produce something pretty compelling. I hope our customers agree :-)

WS-SubversiveAddressing

William Vambenepe published his XMLFrag header proposal earlier this week and it immediately caught my eye. This was in part because of the idea of a ‘WS-SubversiveAddressing’ specification (WS-Addressing has been a lot of my day job at IBM for coming up on 2 years), and in part because apparently that title came from a colleague and I’ve been trying to work out who it was.

I’ve been back and forth on the proposal and I think there’s something with potential in there. After some thought it began to make some sense when I started to think of the XMLFrag header as a ContentType header for WS-Transfer (the W3C TAG apparently had a problem with WS-Transfer because it lacks feature compared to HTTP, but I digress). It lets the client describe to the server the representation it would like returned. That, for WS-Transfer at least, makes sense to me. Whether it’s a good idea for any other SOAP Web Service is less clear, but on the balance I suspect it might be useful.

Where I agree less it with the usefulness of embedding the header in an EPR. The use of it as an equivalent of ContentType means that it’s describing an attribute of the client, not the endpoint, which means it’s really not information which should be in the EPR. On top of that, it’s not entirely clear to me how whoever creates the EPR knows what subset of information the client wants. In general, if you’re a client using an EPR as a [destination] you got it from somewhere else, and how would that elsewhere know what you, as a client wants? Finally, an EPR represents and endpoint which probably has multiple operation associated with it, and the XMLFrag probably doesn’t make sense for more that one of those operations so makes an EPR of limited use.

So I don’t think the EPR related part is of much use, and has some conceptual problems, however I am a realist. The WS-Addressing spec allows anyone to use ReferenceParameters to generate SOAP Headers and people will use that flexibility to put anything in there, advisable or not. This flexibility was a source of much disagreement in the WS-A Working Group before I joined, and I think we still need time to tell if it was the right call.

So, the XMLFrag header looks to me to be potentially useful, and the EPR related bits not so much.

Subversive? Not to me.

Warm!

I’m in Canada for the W3C WS-Policy Interop. (I’m here to do some WS-Addressing Metadata Interop testing), and to confound my expectations (given how cold it was in February), it’s really, really warm.

So much so that I’m off to buy some shorts.

The [action] cannot be processed at the receiver

If you are writing a web service and come across the following message in a SOAP Fault or a stack trace then don’t go digging around trying to find the code that caused the fault, take heed of the following information:

“The [action] cannot be processed at the receiver” is the [reason] string for a WS-Addressing specification defined fault which a compliant WS-Addressing implementation may throw if the value of the wsa:Action header is not recognised. The most likely problem is therefore that the web services client put the ‘wrong’ value in the wsa:Action header.

Suggested course of action: Check the documentation of your web services server to determine what action value it is expecting for a given operation and set that explicitly in your web service client.

Standard conversations

Having been involved on the margins on the ‘standards micro-culture’ for just over a year I recognise all that Umit and William have to say about it. There are a number of conversations we have over and over again, and strategies that some participants can be seen to engage in… in fact I’ve picked up on some of the more effective ones and have been experimenting with them in other contexts.

I think the next step might be a game of standards bingo… I wonder how many of them I’ll tick off on Monday.

Yet Again, More Web Services from WebSphere.

A while ago I mentioned the alpha release of the IBM Web Service Feature Pack for WebSphere 6.1

As is traditional, that alpha is followed by a beta release which was made available yesterday.

This release is the result of a lot of hard work over the last few months and it’s really gratifying to see it out there.

There’s lots of great new function in here to play with. If you’re interested you can grab it from here.

Extract from that page:
* Asynchronous programming model (Limited functional support)
* Multiple Payload structures
* StAX (Streaming API)
* WS-RM (Limited functional support)
* WS-Addressing (Limited functional support) [My main involvement]
* JAX-B support
* Policy Set (Limited functional support)
* Secured thin client (Limited functional support)
* SOAP Message Transmission Optimization Mechanism (MTOM)

“A required header representing a Message Addressing Property is not present”

If you are writing a web service and come across the following message in a SOAP Fault or a stack trace then don’t go digging around trying to find the code that caused the fault, take heed of the following information:

“A required header representing a Message Addressing Property is not present” is the [reason] string for a WS-Addressing specification defined fault which a compliant WS-Addressing implementation MUST throw if a wsa:Action header is not found and WS-Addressing is in use (e.g. the service WSDL contains a wsaw:UsingAddressing element with wsdl:required=”true” attribute).

So if you see that message it’s a sign that either:

  1. Your client is incorrectly adding WS-Addressing headers
  2. The server is expecting WS-Addressing and the client did not send it

So. Check the documentation for your client and server to properly configure your client and server with regards to WS-Addressing. That will fix the problem in 90% of cases*.

*Number a total guess. Likely that the accurate figure is closer to 100%

[Update 2006-10-07] This fault will also occur if a wsa:Action element is present but does not contain a value.

Standards Development Challenges – Part 1

Disclaimer: Nothing in these posts should be taken as a criticism of any individuals or organisations involved in the WS-Addressing Spec. It isn’t.

When it comes to developing computing ‘standards’, it’s important that they are well understood.

Why? Because the whole point of them is that different people can develop hardware or software that works in the same way and in many cases work together. If that can’t be achieved then the standard isn’t worth reading.

I’ve now been involved in the WS-Addressing standardisation effort for a full year and though I’ve been a follower of open standards for many years (in particular the W3C when I was involved with mozilla), I didn’t appreciate quite how difficult this task is. This appreciation has come both from the interoperability testing events I’ve been involved in and from the weekly teleconferences I regularly attend.

The difficulties appear, to me, to fall into 3 categories:

  1. Different parties want different things
  2. Gaining a common understanding of the specified syntax
  3. Gaining a common understanding of the specified semantics

All of these difficulties are exhibited in both the specification development and specification testsing phases though #1 is more prevalent in the development phase. That different companies and individuals have different agendas will come as a surprise to no-one, and neither will the fact that is causes some problems.

“A camel is a horse designed by committee.” Committees use compromise as a route to agreement. Entirely reasonable, and in general a good way to work. I don’t believe WS-Addressing looks much like a camel (in fact I think it’s pretty good), though there are a couple of sentences that are metaphorical camels. These sentences were discussed at length, arrivied at as a compromise, pleased all the parties equally, however are very hard to understand were you not in those meetings.

Standards Development Challenge #1: Prevent compromise wordsmithing from hindering understanding

Beyond the standards development phase, and into the product implementation phase, the motivations of a company or developer can shape how the ‘standard’ is read and interpreted, and subsequently implemented. These assumptions or prejudices may never occur or may not show up until well after any formal interoperability testing has occurred as many implementors may not be involved.

Standards Development Challenge #2: Provide implementations developers with the capability to check their assumptions (if not their implementation) in the future

Gotta run, more soon.

Day Job

While the Interop. work is very much on behalf of IBM it’s in addition to my day job which has been pretty busy recently, working towards a tough deadline (we have lots of these in software development but this was an important one). We hit the date which was a good feeling and should mean that the pressure is off a bit for the next couple of weeks.

W3C WSDL Binding Interop

During the run of the play was the scheduled Face-To-Face for the WSDL binding interop. In the end it was a virtual face-to-face meaning that we each had the day blocked out to do the work (the 2 days off the play mentioned above) but were doing it remotely. In order to test the wsaw:Anonymous=prohibited part of the specification I needed a public endpoint which the Sun endpoint could connect to. That’s not possible at work because of the firewall but is possible at home because I control the firewall. So I planned to do it from home. Disaster struck 20 mins before the kick-off call when my boradband gave up the ghost. According to the company it was being ‘upgraded’. I headed into work (more happiness that I now have a car) and we got some work done the first day (well night for me ‘cos we were working in PST for Arun). The second day the broadband was still broken so I got an endpoint installed on the vrtual server I used to have illsley.org on and now don’t use much. It was a little flakey (to say the least) but we got lots of work done in the forst 4 hours… right up until there was a (scheduled but I wasn’t expecting) network outage at work. I can only thank Arun for not assuming I was being terribly rude as I had no way of getting in touch to explain what had happened.

We’ve done a lot more work on the interop. since and it’s pretty interesting. There’s a post I’ve been meaning to write for a while about spec development that I’ll try to do soon. The reason? We’ve found problems with the spec just trying to formulate the tests!

Next Page »


About

I’m David Illsley, I’m a Software Engineer, currently working for Morgan Stanley in London. In the past I worked for IBM developing products in the WebSphere family, and before that I studied at Edinburgh University. I'm also a PMC member @TheASF, and outside the realms of technology, enjoy skulking around the dark corners of theatre...

Archives

c

Disclaimer

The postings on this site solely reflect the personal views of the author and do not necessarily represent the views, positions, strategies or opinions of my employer.

Twitter Updates

  • *aaah* Another long weekend. I could get used to this. #fb 3 days ago
  • @ajdaniel what is now crap? Have you played with the new built in dev tools? 6 days ago
  • Frustrating not to make it to either fosdem or monkigras this week... It's like 3 buses at once or something 6 days ago
  • Wow, Danish crematoria are are pretty, uh, matter of fact… #borgen 1 week ago
  • @sd_nicholas it's a hedge against changes as it predates the final spec. Unprefixed version I think is due soon. 2 weeks ago

Follow

Get every new post delivered to your Inbox.