Hi all,

   I have to create a web service with a lot of operations. On the
server side, I must use axis 1.4. On the client side I must use Axis
2-1.3.
   For the server I have written an interface representing all
operations (multiple complex arguments, complex returns) and the
implementation of these interface and then generated the correspondant
WSDL. I used this WSDL for the client side in Axis 2. At execution the
client throw an exception of the type : org.apache.axis2.AxisFault:
org.apache.axis2.databinding.ADBException: Unexpected subelement
MyElement

  I have generated and used with success a client made with Axis 1.4.
I have simplified the server interface begining with a method with no
argument returning a simple string until I encounter the same issue as
with the complete WS. This exception appears when the return object is
a complex one containing an array of values.

 Here is the minimal sample generating the exception. Help is welcom :)

#### Server Side (Axis 1.4) - Generation of the WSDL ####

<target name="generateWSDL" depends="checkEnv">
 <mkdir dir="${wsdl.dir}" />
 <axis-java2wsdl classname="ext.awas.ws.AwasWS"
serviceelementname="awas" bindingName="awas" style="WRAPPED"
namespace="http://ws.awas.ext";
location="http://${java.rmi.server.hostname}/${wt.server.id}/servlet/service/awas";
output="${wsdl.file}">
   <classpath refid="awas.classpath" />
   <mapping namespace="http://ws.awas.ext"; package="ext.awas.ws" />
 </axis-java2wsdl>
</target>

#### Server Side (Axis 1.4) - WS Interface Class ####
package ext.awas.ws;

public interface AwasWS {

       SimpleObject getUrsula();
}

#### Server Side (Axis 1.4) - Returned type ####
package ext.awas.ws;

public class SimpleObject {
       private String name;
       private String[] values;

       public SimpleObject() {
               name = "";
               values = new String[0];
       }

       public void setName(String name) {
               this.name = name;
       }

       public String getName() {
               return name;
       }

       public void setValues(String[] values) {
               this.values = values;
       }

       public String[] getValues() {
               return values;
       }
}

#### Client Side (Axis 2-1.3) - Generation of the client part ####*
 <taskdef name="codegen"
classname="org.apache.axis2.tool.ant.AntCodegenTask"
classpathref="axis.classpath"/>
   <target name="default" depends="depends" description="--&gt; description">
       <codegen overwrite="yes"
wsdlfilename="${basedir}/wsdl/awas.wsdl" unpackclasses="true"
serverside="false" unwrap="yes"/>
   </target>


#### Client Side (Axis 2-1.3) - WS call ####
try {
   ConfigurationContext configContext =
ConfigurationContextFactory.createDefaultConfigurationContext();

   AwasStub stub = new AwasStub(configContext,
                   "http://localhost:9090/servlet/service/awas";);

   SimpleObject ursula = stub.getUrsula(new GetUrsula());

   System.out.println(ursula.getName());
   ArrayOf_xsd_string values = ursula.getValues();
   String[] item = values.getItem();
   for (int i = 0; i < item.length; i++) {
       System.out.println(item[i]);
   }
} catch (Exception e) {
   e.printStackTrace();
}

#### The Exception (exists only on the client side) ####
org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException:
Unexpected subelement values
       at org.apache.axis2.AxisFault.makeFault(AxisFault.java:417)
       at ext.awas.ws.AwasStub.fromOM(AwasStub.java:431)
       at ext.awas.ws.AwasStub.getUrsula(AwasStub.java:146)
       at ext.airbus.axis2.auth.Axis2AuthTest.main(Axis2AuthTest.java:45)
Caused by: java.lang.Exception:
org.apache.axis2.databinding.ADBException: Unexpected subelement
values
       at ext.awas.ws.SimpleObject$Factory.parse(SimpleObject.java:509)
       at 
ext.awas.ws.GetUrsulaResponse$Factory.parse(GetUrsulaResponse.java:377)
       at ext.awas.ws.AwasStub.fromOM(AwasStub.java:428)
       ... 2 more
Caused by: org.apache.axis2.databinding.ADBException: Unexpected
subelement values
       at ext.awas.ws.SimpleObject$Factory.parse(SimpleObject.java:467)
       ... 4 more
sincerely,
Richard Fagot

-- 
-------------------------------------------------------------------------------------
Richard Fagot                      Mail : [EMAIL PROTECTED]

Genigraph                           URL : http://www.genigraph.fr
Tertial II
216, route de Saint-Simon    Tel : +33 (0)5 34 60 92 81
31100 Toulouse, France       Fax : +33 (0)5 34 60 92 89
------------------------------------------------------------------------------------

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

Reply via email to