On Thu, Oct 29, 2009 at 2:08 PM, H <[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. 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/
