DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10103>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10103

invalid generated wsdl when inout parameters

           Summary: invalid generated wsdl when inout parameters
           Product: Axis
           Version: current (nightly)
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: WSDL processing
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


When I use inout parameters in methods of my web service, I don't get a correct
wsdl (from http://localhost:8080/axis/services/Hello?wsdl for my example)

I tried both with StringHolder and with a holder for a bean.

It seems that holders are not handled in a specific way : they seem to be 
considered as beans.

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions 
targetNamespace="http://localhost:8080/axis/services/Hello/axis/services/Hello"; 
[...]
  <wsdl:types>
     <schema xmlns="http://www.w3.org/2001/XMLSchema";
targetNamespace="http://holders.rpc.xml.javax";>
       <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
       <element name="StringHolder" nillable="true" type="xsd:anyType"/>
     </schema>
  </wsdl:types>
  <wsdl:message name="sayHelloRequest">
    <wsdl:part name="s" type="tns1:StringHolder"/>
  </wsdl:message>
  <wsdl:message name="sayHelloResponse">
    <wsdl:part name="return" type="xsd:string"/>
    <wsdl:part name="s" type="tns1:StringHolder"/>
  </wsdl:message>
  <wsdl:portType name="HelloImpl">
[...]
</wsdl:definitions>


Here is :

the remote interface :
========================
package hello;

import java.rmi.Remote;
import java.rmi.RemoteException;
import javax.xml.rpc.holders.*;

public interface HelloIF extends Remote {
    public String sayHello(StringHolder s) throws RemoteException;
}

the implementation
===================
package hello;
import javax.xml.rpc.holders.*;
public class HelloImpl implements HelloIF {

    public String message = "Hello ";

    public String sayHello(StringHolder s) {
        s.value = message + s.value;
        return message + s;
    }
}

deploy.wsdd
============
<deployment
    xmlns="http://xml.apache.org/axis/wsdd/";
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java";>

  <service name="Hello" provider="java:RPC">
      <parameter name="className" value="hello.HelloImpl"/>
      <operation name="sayHello" qname="operNS:sayHello"
xmlns:operNS="http://hello"; >
        <parameter name="s" type="tns:string"
xmlns:tns="http://www.w3.org/2001/XMLSchema"; mode="INOUT"/>
      </operation>
      <parameter name="allowedMethods" value="sayHello"/>
  </service>
</deployment>

Reply via email to