Yes, but now the line ProviderUtils.isUnwrapable(getPortTypeOperation());
Is causing troubles, along with others ... I'll try the cvs to update the whole wsif build ... Greetings, Dylan Honorez, [EMAIL PROTECTED] -----Original Message----- From: Simon Solomon [mailto:[EMAIL PROTECTED] Sent: vrijdag 20 augustus 2004 17:11 To: [EMAIL PROTECTED] Subject: RE: Dynamic Invocation of JAX-RPC service I am not sure if the fix ever made it to the actual builds... but an attachment was created to the bugzilla. This attachment has the fix. You can find the attachment at: http://nagoya.apache.org/bugzilla/showattachment.cgi?attach_id=6993 Or read through the bugzilla and you will find the link there. http://nagoya.apache.org/bugzilla/show_bug.cgi?id=18520 The modification is in the "private void setCallParameterNames(Call call) throws WSIFException" method. Hope this helps... Simon Solomon [EMAIL PROTECTED] "Honorez Dylan" <[EMAIL PROTECTED] onos.be> To <[EMAIL PROTECTED]> 08/20/2004 10:53 cc AM Subject RE: Dynamic Invocation of JAX-RPC Please respond to service [EMAIL PROTECTED] he.org Hi, Simon, I'm afraid I was too soon to yield yesterday. I invoked a wrong main class which executed right. However, when I looked at my wsif.jar this morning, I found out my WSIFOperation_ApacheAxis didn't look like the one you gave me at all. I think you already had an updated version? Where do I find this version you gave me? Greetings, Dylan Honorez, [EMAIL PROTECTED] -----Original Message----- From: Simon Solomon [mailto:[EMAIL PROTECTED] Sent: donderdag 19 augustus 2004 15:37 To: [EMAIL PROTECTED] Subject: Re: Dynamic Invocation of JAX-RPC service 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
