I think you are experiencing the same problem indicated here:
http://marc.theaimsgroup.com/?l=wsif-user&m=107696077829674&w=2
Nirmal has updated the
"org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis"
class...
if you don't have/see the fix here it is (the fix starts at the "//Nirmal
fix" line)
/**
* This tells AXIS the name and type of the input, return, and output
parameters.
*/
private void setCallParameterNames(Call call) throws WSIFException {
boolean wrappedStyleOp =
ProviderUtils.isUnwrapable(getPortTypeOperation());
String inputNamespace;
if (WSIFAXISConstants.USE_LITERAL.equals(getInputUse())
&& !wrappedStyleOp) {
inputNamespace = "";
} else {
inputNamespace = getInputNamespace();
}
//Nirmal fix
// assumption: need to include input namespace only for literal
// encoding or for wrapped style operations
if (WSIFAXISConstants.USE_LITERAL.equals(getInputUse()) ||
wrappedStyleOp)
inputNamespace = getInputNamespace();
else
inputNamespace = "";
// end of Nirmal fix
String outputNamespace = "";
List soapParts;
// style=wrapped uses the unwrapped parts
if
(WSIFAXISConstants.AXIS_STYLE_WRAPPED.equals(operationStyle)) {
soapParts = inputUnwrappedSOAPParts;
} else {
soapParts = inputSOAPParts;
}
/* If there are no attachments take the part ordering from the
* soap:body. If there are attachments then the soap:body will
* not include the attachments, so take the part ordering from
* the ordering of the parts in the original message.
*/
List parts;
if (inputMIMEParts.isEmpty()) {
parts = soapParts;
} else {
parts =
portTypeOperation.getInput().getMessage().getOrderedParts(null);
}
for (Iterator i = parts.iterator(); i.hasNext(); ) {
Part p = (Part) i.next();
String partName = p.getName();
if
(WSIFAXISConstants.STYLE_DOCUMENT.equals(operationStyle)) {
QName qn = p.getElementName();
if (qn != null) {
partName = qn.getLocalPart();
}
}
if (!inJmsProps.containsKey(partName)) {
if (inputMIMEParts.contains(p) ||
soapParts.contains(p)) {
QName name = new QName(inputNamespace,
partName);
QName type = getPartType(p);
call.addParameter(name, type,
ParameterMode.IN);
}
}
}
// style=wrapped uses the unwrapped parts
if
(WSIFAXISConstants.AXIS_STYLE_WRAPPED.equals(operationStyle)) {
soapParts = outputUnwrappedSOAPParts;
} else {
soapParts = outputSOAPParts;
}
// setup the return part
Part returnPart = null;
if (soapParts.size() > 0) {
returnPart = (Part)soapParts.get(0);
} else if (outputMIMEParts.size() > 0) {
returnPart = (Part)outputMIMEParts.get(0);
}
if (returnPart == null) {
call.setReturnType(org.apache.axis.encoding.XMLType.AXIS_VOID);
} else {
QName type = getPartType(returnPart);
call.setReturnType(type);
}
// setup output SOAP parts
// from 1 to skip the return part
for (int i = 1; i < soapParts.size(); i++) {
Part p = (Part) soapParts.get(i);
QName name = new QName(outputNamespace, p.getName());
QName type = getPartType(p);
call.addParameter(name, type, ParameterMode.OUT);
}
// setup the output MIME parts
// if no soap parts dont add 1st as its the return part
int startMIMEIndex = (soapParts.size() > 0) ? 0 : 1;
for (int i = startMIMEIndex; i < outputMIMEParts.size(); i++) {
Part p = (Part) outputMIMEParts.get(i);
QName name = new QName(outputNamespace, p.getName());
QName type = getPartType(p);
call.addParameter(name, type, ParameterMode.OUT);
}
}
Simon Solomon
[EMAIL PROTECTED]
"Honorez Dylan"
<[EMAIL PROTECTED]
onos.be> To
<[EMAIL PROTECTED]>
08/19/2004 07:40 cc
AM
Subject
Re: Dynamic Invocation of JAX-RPC
Please respond to service
[EMAIL PROTECTED]
he.org
Hi all,
In addition to my mail this morning:
This is the Soap message that is generated by the AxisClient via WSIF:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:sayHello
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="urn:Foo">
<ns1:String_1 xsi:type="xsd:string">Test</ns1:String_1>
</ns1:sayHello>
</soapenv:Body>
</soapenv:Envelope>
Here's how a standard AxisClient generates a SOAP message, which works
fine with JAX-RPC:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:sayHello
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="urn:Foo">
<String_1 xsi:type="xsd:string">Dylan</String_1>
</ns1:sayHello>
</soapenv:Body>
</soapenv:Envelope>
I'll look further into it!
Kind Regards,
Dylan Honorez,
[EMAIL PROTECTED]
http://www.xt-i.com