Web services is all about interoperability right? Of course but does it always happen? No. You might think the reason is because platforms do not adhere to the spec. This may be true, but not always. Sometimes it's the platform specific implementations that ruin interoperability between different platforms. (source)

Consider, for example, what a Vector in Java would translate to. Let's say you want to implement a .NET application to consume the Web service. Is there such a thing as a Vector in .NET? Perhaps it can be said that a Vector in Java is the same as an ArrayList in .NET, but can you guarantee that the mapping between Java and .NET is always Vector <-> ArrayList?

This new article posted up on MSDN discusses some of these issues and provides some tips on creating Web services that are created WSDL-first rather than implementation first.

http://msdn.microsoft.com/vstudio/java/interop/websphereinterop/default.aspx