On Sun, Feb 8, 2009 at 10:09 PM, Michael <[email protected]> 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/