On Sun, Feb 8, 2009 at 10:09 PM, Michael <mtarullo...@optonline.net> wrote:

>  OK.  Is it me?  I know I'm 1) not understanding Axis2's API and therefore
> 2) not using it correctly.
>
> For the past three weeks I have been unable to get anything but the
> simplist web service to work.  By simplest I mean a web service that passes
> and returns only primitives (i.e. int, float, String, etc....).  I have been
> following the examples I found on the web (bottom-up web services with
> Axis2) and on the Apache Axis2 web site ( bottom-up development web services
> with Axis2 and POJO's).  Here is some of what I've tried.  Can anyone tell
> me what I'm missing?
>
> Bottom-Up Web Service Using Java Objects As Parameters And/Or Return Values
>  public class WSDataOnlyObj
> {
>  public String str = "This is a data only object";
>  public int    num = 1;
> }
>

If this your complete class you need to add getter and setter methods.

thanks,
Amila.

>
>
>
> public class WS
> {
>  private String          str;
>  private WSDataOnlyObj   objDataOnly;
>
>  public String GetString( )
>  {
>   str = "This is a string";
>
>   return str;
>  }
>
>  public WSDataOnlyObj GetDataOnlyObj( )
>  {
>   objDataOnly = new WSDataOnlyObj( );
>   return objDataOnly;
>  }
> }
>
>
>
> CLIENT CODE
> -----------
> import java.rmi.RemoteException;
> import org.apache.axis2.AxisFault;
>
> public class WSClient
> {
>  public static void main(String[] args)
>  {
>   try
>   {
>    WSStub.GetStringResponse      getStringResp;
>    WSStub.GetDataOnlyObjResponse getDOObjResp;
>
>    WSStub stub = new WSStub("
> http://localhost:8080/Webservice/services/WS/ws/pojo/service";);
>
>    getStringResp = stub.GetString();
>    getDOObjResp  = stub.GetDataOnlyObj();
>
>    System.out.println("RESULT Of Call To Web Service GetSting(): " +
>                                 getStringResp.get_return());
>    System.out.println("RESULT Of Call To Web Service
> GetDataOnlyObj().getStr(): " +
>                                getDOObjResp.get_return().getStr());
>    System.out.println("RESULT Of Call To Web Service
> GetDataOnlyObj().getNum(): " +
>                                getDOObjResp.get_return().getNum());
>   }
>   catch(AxisFault axisEx)
>   {
>    System.out.println(axisEx.getMessage());
>   }
>   catch(RemoteException remEx)
>   {
>    System.out.println(remEx.getMessage());
>   }
>  }
> }
>
>
>
> RESULTS
> -------
> RESULT Of Call To Web Service GetSting(): This is a string
> RESULT Of Call To Web Service GetDataOnlyObj().getStr(): null
> RESULT Of Call To Web Service GetDataOnlyObj().getNum(): -2147483648
> You see!!!!  Getting the String return value works fine with this method
> but not getting the object return value.
> Now let's look at trying the POJO example given in the Axis2 documentation.
>
>  Bottom-Up Web Service Using Java Objects As Parameters And/Or Return
> Values - POJO Client Example
>  public class WSDataOnlyObj
> {
>  private String str = "This is a data only object";
>  public String GetString( )
>  {
>   return str;
>  }
>
>  public void SetString(String aStr)
>  {
>   str = aStr;
>  }
> }
>
>
>
> public class WS
> {
>  public WSDataOnlyObj GetDataOnlyObj( )
>  {
>   WSDataOnlyObj objDataOnly = new WSDataOnlyObj( );
>   return objDataOnly;
>  }
> }
>
> import javax.xml.namespace.QName;
>
> import org.apache.axis2.AxisFault;
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.client.Options;
> import org.apache.axis2.rpc.client.RPCServiceClient;
> public class WSTestClientApp
> {
>  public static void main(String[] args)
>  {
>   try
>   {
>    RPCServiceClient serviceClient = new RPCServiceClient( );
>
>    Options options = serviceClient.getOptions( );
>
>    EndpointReference epr = new EndpointReference("
> http://localhost:8080/WSTest/services/WS";);
>
>    options.setTo(epr);
>
>    Object[ ] opWSDataOnlyObjArgs = new Object [ ] { };
>    Class [ ] returnTypes = new Class [ ] {WSDataOnlyObj.class};
>
>    .....
>   }
>   catch(AxisFault axisEx)
>   {
>    System.out.println(axisEx.getMessage());
>   }
>   catch(RemoteException remEx)
>   {
>    System.out.println(remEx.getMessage());
>   }
>  }
> }
>
> Here's my problem with this example, this code (adapted from the "weather"
> example) requires an import of the package containing the WSDataOnlyObj.
> You can make this work for this example but unless I'm wrong the client
> should get all objects from the stub and should not have to access the
> development package of the web service object!!!!!
>
> These appear to be some serious problems with the Axis2 API.
>
> Can anyone explain what I might be missing?
>
> Thanks
>



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

Reply via email to