Hi,

Simon, that fixed it for me! Thank you very much!

Kind Regards,
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





Reply via email to