I am designing a JAX-WS 2.0 webservice, which would be consumed by a wide variety of applications running on different software/platforms. I need to make sure that my web service written in JAVA, is consumable and the data is transferred to and from my service without any ambiguty or corruption.
What are the factors that i need to take care of, while making my JAVA transfer objects highly interoperable? Should i keep all my data in String attributes or can i use other data types as well? Please help me with this.
I need to make sure that my web service written in JAVA
What are the factors that i need to take care of, while making my JAVA transfer objects highly interoperable?
This sounds a bit odd. WHile a JAX-WS service would (obviously) be written in Java, this sounds like you expect the client(s) to be written in Java as well, as possibly transfer Java objects across the wire - is that correct? If so, I'd rethink that because WS are meant to be independent of OS and language - so don't Java objects, send something that conforms to XML Schema and so is understood widely.
You should not worry about this, because the types you will use (either as input arguments or as return values) will be expressed by the equivalent constructs of xml in the xsd types included in the wsdl that you will publish for your web service.
Your web clients will use the wsdl and the xsd's and their tools will generate the appropriate types for their software (depending on what web clients they are using).
What you should be interested in though, is to adhere to WS-I profile rules in forming your services so as to achieve the interoperability you need.
This is the area you need to look into (WS-I Profile specs).
A quick example is the use of inheritence in your data structures you declare in the wsdl, is not covered by WS-I profile. Another example is to use only doc binding and not rpc binding.
I hope this helps.