Unfortunately  this is a pain in the @!##@ for us and not for the two
"camps"....the basic problem is that the Apache soap toolkit MUST have a
type attribute on ALL parameters...The Microsoft SOAP toolkit does not
require this...(which makes sense because the parameter type is described
in the wsdl....anyways...)  So if you're a microsoft CLIENT you must use
the low level api to construct your SOAP call so you can add the type
parameter.....I saw some code somewhere that showed how to modify the
Apache SOAP toolkit to get around this problem from the server side but I
haven't tried it and I'm not sure if this would affect other
implementations on your server....If you're a Java client calling a MS
server you must add a SOAPMappingRegistry to the Call with the appropriate
deserializer...there is an interop section in both the Apache site and the
MSDN site....do a little digging and you'll find it..

good luck
Doug


                                                                                       
                                        
                      "Sniff Xu                                                        
                                        
                      (HangZhou)"              To:       [EMAIL PROTECTED]       
                                        
                      <[EMAIL PROTECTED]       cc:       (bcc: Doug 
Swanson/US-Corporate/3M/US)                                
                      om.cn>                   Subject:  Help me! MS Soap & Apache 
soap Interop                                
                                                                                       
                                        
                      07/25/2002 04:25                                                 
                                        
                      AM                                                               
                                        
                      Please respond to                                                
                                        
                      soap-dev                                                         
                                        
                                                                                       
                                        
                                                                                       
                                        



---------------
Environments:
Machine 1: Apache SOAP2.3.1 (Works as SOAP Server), Tomcat4.1,  JDK1.3.1,
Windows2K
Machine 2: MS SOAP2 (Works as SOAP Client), Window2K
==============
When Apache Soap works as Server and MS SOAP works as client, if the
invoking methods contains no parameters or returns such as void foo(void),
it works properly.

When Apache Soap works as Server, MS SOAP2 works as Server, there is
parameter in invoking methods such as void foo(string param) ,it works
improperly.

Please see my code and configuration:
1. Web Services Method:
package hello;
public class HelloParam {
  public void sayHelloTo(String name)  {
    System.out.println("sayHelloTo() have-param & no-return-value");
  }
}
-------------------------------
2. My Deloy Configuration File
<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment";
id="WS:HaveParam">
  <isd:provider type="java" scope="Application" methods="sayHelloTo">
    <isd:java class="hello.HelloParam" static="false"/>
  </isd:provider>

<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListene

r>
  <isd:mappings>
    <isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:x="WS:HaveParam" qname="x:A"

xml2JavaClassName="org.apache.soap.encoding.soapenc.StringDeserializer"/>
   </isd:mappings>
</isd:service>

Question: In some files I see xmlns:x=""( null), but it does not work here.
When execute:
java org.apache.soap.server.ServiceManagerClient *URI* deploy **.xml
An error occurs.
--------------------
3. SOAP Client (Simplified Code)
 Option Explicit
 Dim SC
 Dim Res
 Set SC = CreateObject("MSSOAP.SoapClient")
 Call SC.mssoapinit("HelloParam.wsdl",  "", "", "")
 SC.sayHelloTo("aa")
-----------------------
4. HelloParam.wsdl file
<?xml version='1.0' ?>
<definitions  name='HelloParam' targetNamespace='WS:HaveParam'
             xmlns='http://schemas.xmlsoap.org/wsdl/'
        xmlns:tns='WS:HaveParam_WSDL'
        xmlns:se='http://schemas.xmlsoap.org/soap/encoding/'
        xmlns:xsd='http://www.w3.org/2000/10/XMLSchema'
        xmlns:so='http://schemas.xmlsoap.org/wsdl/soap/'>

  <message name='HelloParam.RetString'>
      <part name='A' type='xsd:string'/>
  </message>
  <message name='HelloParam.RetStringResponse'>
  </message>
  <portType name='HelloParamSoapPort'>
    <operation name='sayHelloTo' parameterOrder='A'>
      <input message='tns:HelloParam.RetString' />
      <output message='tns:HelloParam.RetStringResponse' />
    </operation>
  </portType>

   <binding name='HelloParam.Binding' type='tns:HelloParamSoapPort'>
      <so:binding style='rpc'
transport='http://schemas.xmlsoap.org/soap/http' />
      <operation name='sayHelloTo'>
          <so:operation soapAction=''/>
      <input>
        <so:body use="encoded"
                   namespace="WS:HaveParam"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
        <so:body use="encoded"
                   namespace="WS:HaveParam"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
      </operation>
   </binding>

   <service name='HelloParam'>
      <port name='HelloParamSoapPort' binding='tns:HelloParam.Binding'>
          <so:address location='http://sniff:8080/soap/servlet/rpcrouter'
/>
      </port>
   </service>
</definitions>
==========================
Error message:
No Deserializer found to deserialize a ':name' using encoding style
'http://schemas.xmlsoap.org/soap/encoding/'.

Please help me!


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>







--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to