[jboss-user] [JBossWS] - SOLUTION! (yeah, for reals)
tomstrummer
do-not-reply at jboss.com
Tue Jul 8 16:05:44 EDT 2008
Ok! I was actually able to convert the rpc/encoded WSDL to rpc/literal. So I use my modified WSDL against the service rather than their rpc/encoded one. I realized the response is valid rpc/literal, just with some added xsi:type attributes.
First step: convert the WSDL:
Convert the <soap:body attribute to use="literal" and remove the encodingStyle attribute.
Second step: convert any complexTypes to not extend soapenc:Array:
Any types that use <xs:restriction base="soapenc:Array"> can be changed to this:
For a loosely-typed array (JAXB will map it to a List):
| <xs:complexType name="VariantArray">
| <xs:complexContent>
| <xs:extension base="ns1:GlxNode">
| <xs:sequence>
| <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
| </xs:sequence>
| </xs:extension>
| </xs:complexContent>
| </xs:complexType>
|
or for a typed List:
| <xs:complexType name="StringArray">
| <xs:complexContent>
| <xs:extension base="ns1:GlxNode">
| <xs:sequence>
| <xs:element name="String" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
| </xs:sequence>
| </xs:extension>
| </xs:complexContent>
| </xs:complexType>
|
Just chose your own "base" type to extend or just create a new ComplexType.
Note also that I ended up switching to Metro (JAX-WS) 1.2 rather than JBossWS. But using JBossWS as a client seemed to work as well.
This is a bit of a pain but still a hell of a lot better than not being able to consume an RPC/encoded service or being stuck using Axis 1. Hope this helps someone as I couldn't find any other solution in all my searching.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4163152#4163152
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4163152
More information about the jboss-user
mailing list