axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Donnie Hale (JIRA)" <axis-...@ws.apache.org>
Subject [jira] Created: (AXIS-1751) WSDL generated for "wrapped" style invalid, breaking .NET's wsdl.exe
Date Tue, 04 Jan 2005 23:28:16 GMT
WSDL generated for "wrapped" style invalid, breaking .NET's wsdl.exe
--------------------------------------------------------------------

         Key: AXIS-1751
         URL: http://issues.apache.org/jira/browse/AXIS-1751
     Project: Axis
        Type: Bug
    Versions: 1.2RC2    
 Environment: Axis 1.2RC2 under Jetty via JDK 1.5.
    Reporter: Donnie Hale


I posted this issue on axis-user and got a couple of responses that it is a bug in Axis. I
didn't find an existing issue - my apologies if this is a dupe.

Using 1.2RC2, I have a service deployed with style="wrapped". When I use .NET's wsdl.exe to
try to generate client proxies, I get the following output:

Schema validation warning: Invalid 'name' attribute value: The ':' character, hexadecimal
value 0x3A, cannot be included in a name..
Schema validation warning: Invalid 'name' attribute value: The ':' character, hexadecimal
value 0x3A, cannot be included in a name..

Warning: Schema could not be validated. Class generation may fail or may produce incorrect
results.

Error: Unable to import binding 'prototypeSoapBinding' from namespace ...
  - Unable to import operation 'startTransaction'.
  - Schema with targetNamespace='http://proto.wsapp.phileosoftware.com' has invalid syntax.
  - Invalid 'name' attribute value: The ':' character, hexadecimal value 0x3A, cannot be included
in a name..

In the wsdl:types element (see end of message), notice the 2 elements of the form: <element
name="tns1:in0" type="xsd:string"/>. WSDL.exe doesn't like those prefixes, and I believe
they in fact invalid for an <element> name attribute. If I hand-edit the WSDL, taking
out the 2 appearances of the "tns1:" prefixes from those elements, then wsdl.exe doesn't complain
and generates the proxies.

The interface which the web service implements is:

public interface IWSSQLService
{
    public String startTransaction(String dbID);
    public byte[] getFile(String filename) throws java.io.IOException;
}

The deployment file is:

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="prototype" style="wrapped" use="literal" provider="Handler">
        <parameter name="handlerClass" value="com.phileosoftware.wsapp.infra.ProxyProvider"/>
        <parameter name="className" value="com.phileosoftware.wsapp.proto.IWSSQLService"/>
        <parameter name="allowedMethods" value="*"/>
        <parameter name="scope" value="Application"/>
    </service>
</deployment>

Note that my handler class just extends RPCProvider, overriding only the makeNewServiceObject
method to return an object that implements the above interface. I don't do any WSDL-generation
handling - just implement the 2 methods in that interface.

Here's the WSDL Axis returns for a "?wsdl" URL:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
    targetnamespace="http://localhost:8088/myapp/services/prototype"
    xmlns:apachesoap="http://xml.apache.org/xml-soap"
    xmlns:impl="http://localhost:8088/myapp/services/prototype"
    xmlns:intf="http://localhost:8088/myapp/services/prototype"
    xmlns:tns1="http://proto.wsapp.phileosoftware.com"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <!--WSDL created by Apache Axis version: 1.2RC2
    Built on Nov 16, 2004 (12:19:44 EST)-->
    <wsdl:types>
        <schema elementformdefault="qualified"
            targetnamespace="http://proto.wsapp.phileosoftware.com"
            xmlns="http://www.w3.org/2001/XMLSchema">
            <element name="startTransaction">
                <complextype>
                    <sequence>
                        <element name="tns1:in0" type="xsd:string"/>
                    </sequence>
                </complextype>
            </element>
            <element name="startTransactionResponse">
                <complextype>
                    <sequence>
                        <element name="startTransactionReturn" type="xsd:string"/>
                    </sequence>
                </complextype>
            </element>
            <element name="getFile">
                <complextype>
                    <sequence>
                        <element name="tns1:in0" type="xsd:string"/>
                    </sequence>
                </complextype>
            </element>
            <element name="getFileResponse">
                <complextype>
                    <sequence>
                        <element name="getFileReturn" type="xsd:base64Binary"/>
                    </sequence>
                </complextype>
            </element>
        </schema>
    </wsdl:types>

    <wsdl:message name="startTransactionRequest">
        <wsdl:part element="tns1:startTransaction" name="parameters"/>
    </wsdl:message>

    <wsdl:message name="startTransactionResponse">
        <wsdl:part element="tns1:startTransactionResponse" name="parameters"/>
    </wsdl:message>

    <wsdl:message name="getFileRequest">
        <wsdl:part element="tns1:getFile" name="parameters"/>
    </wsdl:message>

    <wsdl:message name="getFileResponse">
        <wsdl:part element="tns1:getFileResponse" name="parameters"/>
    </wsdl:message>

    <wsdl:porttype name="IWSSQLService">
        <wsdl:operation name="startTransaction">
            <wsdl:input message="impl:startTransactionRequest" name="startTransactionRequest"/>
            <wsdl:output message="impl:startTransactionResponse" name="startTransactionResponse"/>
        </wsdl:operation>
        <wsdl:operation name="getFile">
            <wsdl:input message="impl:getFileRequest" name="getFileRequest"/>
            <wsdl:output message="impl:getFileResponse" name="getFileResponse"/>
        </wsdl:operation>
    </wsdl:porttype>

    <wsdl:binding name="prototypeSoapBinding" type="impl:IWSSQLService">
        <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="startTransaction">
            <wsdlsoap:operation soapaction=""/>
            <wsdl:input name="startTransactionRequest">
                <wsdlsoap:body use="literal"/>
            </wsdl:input>
            <wsdl:output name="startTransactionResponse">
                <wsdlsoap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
        <wsdl:operation name="getFile">
            <wsdlsoap:operation soapaction=""/>
            <wsdl:input name="getFileRequest">
                <wsdlsoap:body use="literal"/>
            </wsdl:input>
            <wsdl:output name="getFileResponse">
                <wsdlsoap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>

    <wsdl:service name="IWSSQLServiceService">
        <wsdl:port binding="impl:prototypeSoapBinding" name="prototype">
            <wsdlsoap:address location="http://localhost:8088/myapp/services/prototype"/>
        </wsdl:port>
    </wsdl:service>

</wsdl:definitions>

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


Mime
View raw message