Hi Boris,

 

You can have the return type as OMElement.  With that you can return
anything you want (it could be a string, date, Boolean or something
else).

 

You'll define it in WSDL like this.

 

                    <any namespace="##targetNamespace" minOccurs="0"
processContents="lax"/>

 

 

Thanks

Raghu

From: Boris Klug [mailto:bo...@klg.de] 
Sent: Monday, May 11, 2009 2:44 AM
To: Chinmoy Chakraborty; axis-user@ws.apache.org
Subject: Re: Re: Axis2: Returning an Object as AnyType - get error

 

Hello!

Thank you for your suggestion. I have done it in another case where I
had to return an array of data holder objects. 

Here I realy want to return a String, Integer, Date or Boolean. What I
cant do - but that would be realy ugly - is to create a class like

class ReturnValue {
  public String aString;
  public Integer aInteger;
  public Boolean aBoolean;
}

and only set the value of the type I want to return. It would work - but
its ugly.

So some other hints?

----- original Nachricht --------

Betreff: Re: Axis2: Returning an Object as AnyType - get error
Gesendet: Mo, 11. Mai 2009
Von: Chinmoy Chakraborty




Hello,

 

I had the same problem when I tried to migrate Axis 1.4 to Axis2 1.4.
Only difference was in my case I was returning Object array (Object[]
which was 2D array, array of arrays).

 

The developers said it works but it didn't work for me. the solution was
to use ComplexTypeArray. If you want to return a complextype, make a
class and use array of that class as return type. e.g. suppose i want to
return names and addresses of people, so i will make class People.

 

class People{

      String name;

      String address;

      int phone_number;

      etc..

}

 

and People[] will be return type and it works perfectly OK. In your case
it will work if you use specific type or complex type instead of Object.

 

Chinmoy

 


 

On Fri, May 8, 2009 at 7:27 PM, Boris Klug <bo...@klg.de> wrote:

Hi!

We want to migrate a Axis 1.4 webservice to Axis2. The webservice is
generated from a POJO Java class which contains a method like this:

 public Object getData() {
   return "a string";
 }

The WSDL generated by Axis2 looks like this:

<xs:element name="getDataResponse">
  <xs:complexType>
    <xs:sequence>
      <xs:element minOccurs="0"
          name="return" nillable="true" type="xs:anyType"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

The client is generated from the wsdl using wsdl2java. When I test the
web service with GetDataResponse gdr = stub.getData(); it generates the
following exception:

org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException:
Any type element type has not been given
   at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
   at package.MyServiceStub.fromOM(ZederbasicServiceStub.java:14738)

The Object returned by getData() can be a String, Integer, Boolean or
Date, no other types. All can be serialized by Axis2.

In Axis 1.4 returning an Object was no problem. I search the mailing
list but found no hint.

Any ideas how I can get this to work?

Thank you in advance.


--
Boris Klug, Koblenz, bo...@klg.de, Fax: 0261-1334249




--- original Nachricht Ende ----

Reply via email to