I figured this out, after stepping through the axis source code. (Good thing
the source is available!)
The Axis generated stubs (from WSDL2Java) set all of the method parameters to
be in the header (specifically, lines of code in the stub look like this next
fragmenet, where the next to last parameter is true). This controls whether
input parameters are passed in the header or body. I don't see a WSDL2Java
option to change this - it always generates them this way.
param = new org.apache.axis.description.ParameterDesc(new
javax.xml.namespace.QName("urn:ESS_Change_Submit", "type"),
org.apache.axis.description.ParameterDesc.IN, new
javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"),
java.lang.String.class, true, false);
Now that would explain why Remedy thinks the parameter is missing. It
apparently is looking in the body only, not the header.
I went through the stub classes and manually changed all of them to be false so
the parameters are in the body. Then it works!
Question: Is this a bug in Axis, a bug in Remedy, or both? Should Remedy
support having the parameters be in the header (which seems the default for
Axis/WSDL2Java at least based on Remedy's WSDL?) At the very least there seems
to be a pretty painful incompatibility between Remedy and Axis here.
Dan
________________________________
From: Action Request System discussion list(ARSList) on behalf of Grooms,
Frederick W
Sent: Wed 7/19/2006 11:32 AM
To: [email protected]
Subject: Re: Problem consuming Remedy web services using Axis
**
With the mid-Tier logs set to the most detailed it will show you the XML being
sent to Remedy. What does it look like compared to the XML structure in the
WSDL?
Fred
________________________________
From: Action Request System discussion list(ARSList) [mailto:[EMAIL PROTECTED]
On Behalf Of Dan Hardy
Sent: Wednesday, July 19, 2006 1:31 PM
To: [email protected]
Subject: Problem consuming Remedy web services using Axis
**
I'm accessing Remedy web services for the first time, and running into an error.
I'm using Java/Axis as the client, and I generated the client stubs using
WSDL2Java. This gives me two classes (one for submitting requests, one for
modifying requests), based on two WSDL files.
When my code makes a request of either service, providing values for all
parameters, I get an error like the below error - it seems the error always
complains about the first element being missing. This looks to me like the
request is definitely getting to the AR Server, and it is rejecting the content.
Any clues? Are Remedy web services compatible with Axis clients? I google'd
and found a couple of other people that have hit this problem, but no solutions
posted.
Thanks,
Dan
MessageType: 2
MessageNum: 8961
MessageText: Required element expected in the input XML document
AppendedText: <businessUnit>
__20060125_______________________This posting was submitted with HTML in it___
_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at http://www.wwrug.org