Amila Suriarachchi wrote:


On Thu, Oct 29, 2009 at 2:08 PM, H <[email protected] <mailto:[email protected]>> wrote:

    Some additional info, since I'm really stuck on this point:

    - I have 2 different classes (annotated with @Webservice) which
    expose a few public methods (annotated with @Webmethod).

    - I have added separate .wsdl files (same name as the @Webservice
    classes) in META-INF

    - The param "useOriginalwsdl" has no influence at all. If the the
    .wsdl's are in META-INF, they're used. Setting to false (or
    removing it) doesn't do anything.

    - The WSDL's I put in META-INF are identical to what ?wsdl
    generates. No modifications.

    - When the .aar is deployed with the supplied WSDL's and I call
    the ?wsdl, the output WSDL XML is about the same as the original
    generated WSDL (some order differences, nothing major it seems).

    What am i doing wrong? Why am I getting the ADBException?


check whether there is a difference between new and old wsdl files.
The new and old wsdl files are nearly the same. The only difference is the order of the xml elements, which should be harmless, right?
After all, it's XML.

thanks,
Amila.


    /Exception in thread "main" org.apache.axis2.AxisFault:
    org.apache.axis2.databinding.ADBException: Unexpected subelement
    debugMessage
        at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
        at
    nl.organization.webservices.Ws_UsersStub.fromOM(Ws_UsersStub.java:19397)
        at
    nl.organization.webservices.Ws_UsersStub.removeUser(Ws_UsersStub.java:1384)
        at test.Client.reqRemoveUser(Client.java:65)
        at test.Client.main(Client.java:14)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
    
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
    
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at
    com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)/


    Henjo van Rees wrote:
    Hi,

    I've been developing an Axis based Webservice for some time now.
    Right now I'm at the point where the basics function alright and
    that I am starting on improving stuff like security.
    One aspect of that is stop using the generated WSDL and supply my
    own. Because I'm far from a WS guru, I decided to use the
    generated WSDL and use that as a basis for improvement.

    What I've done is the following:
    - Save generated WSDL with the same name as the service name
    (name.wsdl) and put that in the .aar (META-INF dir)
    - Set the parameter "useOriginalwsdl" to true for that service
    (services.xml)
    - Keep the classes exactly the same, no other changes.
    - Deploy the .aar, restart Tomcat.
    - Verify webservice+operations using the listServices servlet
    (they are listed exactly as they should)

    So Axis2 accepts the .aar.

    However, now my webservices test client does not function anymore
    with this modification. This probably has to do with namespaces,
    but I wonder how I should get it working.
    What must I change in my services.xml to get it working with my
    own WSDL?

    **** *The java classes are in the root package
    /nl.organization.webservices/.*

    *** services.xml snippet:*
    <serviceGroup>
        <service name="Ws_Users">
            <description>WebServices - User Management</description>
            <parameter name="ServiceClass"
    locked="true">nl.organization.webservices.Ws_Users</parameter>
            <parameter name="useOriginalwsdl">true</parameter>
            <operation name="addUser">
                <messageReceiver
    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
            </operation>
        </service>
    <serviceGroup>

    *** Generated WSDL snippet*:
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
    <http://schemas.xmlsoap.org/wsdl/>
    xmlns:ns1="http://org.apache.axis2/xsd";
    <http://org.apache.axis2/xsd>
    xmlns:ns="http://webservices.organization.nl";
    <http://webservices.organization.nl>
    xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl";
    <http://www.w3.org/2006/05/addressing/wsdl>
    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/";
    <http://schemas.xmlsoap.org/wsdl/http/>
    xmlns:ax21="http://webservices.organization.nl/xsd";
    <http://webservices.organization.nl/xsd>
    xmlns:xs="http://www.w3.org/2001/XMLSchema";
    <http://www.w3.org/2001/XMLSchema>
    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/";
    <http://schemas.xmlsoap.org/wsdl/mime/>
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
    <http://schemas.xmlsoap.org/wsdl/soap/>
    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/";
    <http://schemas.xmlsoap.org/wsdl/soap12/>
    targetNamespace="http://webservices.organization.nl";
    <http://webservices.organization.nl>>
        <wsdl:documentation>Ws_Users</wsdl:documentation>
        <wsdl:types>
            <xs:schema
    xmlns:ax22="http://webservices.organization.nl/xsd";
    <http://webservices.organization.nl/xsd>
    attributeFormDefault="qualified" elementFormDefault="qualified"
    targetNamespace="http://webservices.organization.nl";
    <http://webservices.organization.nl>>
                <xs:import
    namespace="http://webservices.organization.nl/xsd";
    <http://webservices.organization.nl/xsd>/>
                <xs:element name="addUser">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element minOccurs="0" name="username"
    nillable="true" type="xs:string"/>
                            <xs:element minOccurs="0"
    name="groupname" nillable="true" type="xs:string"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="addUserResponse">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element minOccurs="0" name="return"
    nillable="true" type="ax22:WsResponse"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                ....
            </xs:schema>
            <xs:schema attributeFormDefault="qualified"
    elementFormDefault="qualified"
    targetNamespace="http://webservices.organization.nl/xsd";
    <http://webservices.organization.nl/xsd>>
                <xs:complexType name="WsResponse">
                    <xs:sequence>
                        <xs:element minOccurs="0" name="debugMessage"
    nillable="true" type="xs:string"/>
                        <xs:element minOccurs="0" name="exitCode"
    type="xs:int"/>
                        <xs:element minOccurs="0" name="message"
    nillable="true" type="xs:string"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:schema>
        </wsdl:types>
        <wsdl:message name="addUserRequest">
            <wsdl:part name="parameters" element="ns:addUser"/>
        </wsdl:message>
        <wsdl:message name="addUserResponse">
            <wsdl:part name="parameters" element="ns:addUserResponse"/>
        </wsdl:message>
    ....

    *** EXCEPTION WHEN RUNNING WS CLIENT:*
    (I've generated the stub classes with wsdl2java)
    Exception in thread "main" org.apache.axis2.AxisFault:
    org.apache.axis2.databinding.ADBException: Unexpected subelement
    debugMessage
        at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
        at
    nl.organization.webservices.Ws_UsersStub.fromOM(Ws_UsersStub.java:19397)
        at
    nl.organization.webservices.Ws_UsersStub.removeUser(Ws_UsersStub.java:1384)
        at test.Client.reqRemoveUser(Client.java:65)
        at test.Client.main(Client.java:14)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
    
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
    
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at
    com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

    Any help will be welcome!
    Thanks!





--
Amila Suriarachchi
WSO2 Inc.
blog: http://amilachinthaka.blogspot.com/

Reply via email to