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

Reply via email to