You are viewing a plain text version of this content. The canonical link for it is here.
Posted to savan-dev@ws.apache.org by "Amila Chinthaka Suriarachchi (JIRA)" <ji...@apache.org> on 2010/05/09 06:50:49 UTC

[jira] Resolved: (AXIS2-3538) RPCServiceClient response handling incorrect when there are multi byte[] object in the return bean

     [ https://issues.apache.org/jira/browse/AXIS2-3538?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Amila Chinthaka Suriarachchi resolved AXIS2-3538.
-------------------------------------------------

    Resolution: Fixed

already fixed in the trunk.

> RPCServiceClient response handling incorrect when there are multi byte[] object in the return bean
> --------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-3538
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3538
>             Project: Axis2
>          Issue Type: Bug
>          Components: adb, rpc
>    Affects Versions: 1.3
>         Environment: WinXP, JDK 1.5
> Spring+Axis2 1.3
>            Reporter: Qiuming Bao
>            Priority: Critical
>         Attachments: pojoguidespring.zip, WeatherSpringService.aar
>
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> I'm using the axis2 with Spring integrated. POJO Spring  bean as service is working.
> But the object returned/retrieved on the client side ( with RPCServiceClient) is incorrect. 
> In the return object, there are several byte[] attributes. 
> On the client, the return object's byte[] attributes will be set with the value of the first byte[] attribute. 
>  
> Following is the modified WeatherSpringService code based on axis2 bundled sample. 
> /** Weather.java */
> package sample.spring.bean;
> public class Weather{
>     float temperature;
>     String forecast;
>     boolean rain;
>     float howMuchRain;
>     byte[] b1;
>     byte[] b2;
>     byte[] b3;
>     
>     public void setTemperature(float temp){
>         temperature = temp;
>     }
>     public float getTemperature(){
>         return temperature;
>     }
>     
>     public void setForecast(String fore){
>         forecast = fore;
>     }
>     public String getForecast(){
>         return forecast;
>     }
>     
>     public void setRain(boolean r){
>         rain = r;
>     }
>     public boolean getRain(){
>         return rain;
>     }
>     
>     public void setHowMuchRain(float howMuch){
>         howMuchRain = howMuch;
>     }
>     public float getHowMuchRain(){
>         return howMuchRain;
>     }
>     
>     public void setB1(byte[] b) { 
>     	this.b1 = b;
>     }
>     public byte[] getB1() { 
>     	return b1;
>     }
>     public void setB2(byte[] b) { 
>     	this.b2 = b;
>     }
>     public byte[] getB2() { 
>     	return b2;
>     }
>     public void setB3(byte[] b) { 
>     	this.b3 = b;
>     }
>     public byte[] getB3() { 
>     	return b3;
>     }
> }
> /** WeatherSpringRPCClient .java */
> package client;
> 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;
> import sample.spring.bean.Weather;
> public class WeatherSpringRPCClient {
>     public static void main(String[] args1) throws AxisFault {
>         RPCServiceClient serviceClient = new RPCServiceClient();
>         Options options = serviceClient.getOptions();
>         EndpointReference targetEPR 
>                 = new EndpointReference(
>                 "http://localhost:8080/axis2/services/WeatherSpringService"); 
>         
>         options.setTo(targetEPR);
>         // Get the weather (no setting, the Spring Framework has already initialized it for us)
>         QName opGetWeather = new QName("http://service.spring.sample/xsd", "getWeather");
>         Object[] opGetWeatherArgs = new Object[] { };
>         Class[] returnTypes = new Class[] { Weather.class };
>         
>         
>         Object[] response = serviceClient.invokeBlocking(opGetWeather,
>                 opGetWeatherArgs, returnTypes);
>         
>         Weather result = (Weather) response[0];
>         
>         // display results
>         if (result == null) {
>             System.out.println("Weather didn't initialize!");
>         }else{
>             System.out.println("Temperature               : " +
>                                result.getTemperature());
>             System.out.println("Forecast                  : " +
>                                result.getForecast());
>             System.out.println("Rain                      : " +
>                                result.getRain());
>             System.out.println("How much rain (in inches) : " +
>                                result.getHowMuchRain());
>             System.out.println("Byte b1 : " +
>                                new String(result.getB1()));
>             System.out.println("Byte b2 : " +
>                                new String(result.getB2()));
>             System.out.println("Byte b3 : " +
>                                new String(result.getB3()));
>         }
>     }
> }
> /** WeatherSpringService */
> package sample.spring.service;
> import sample.spring.bean.Weather;
> public class WeatherSpringService{
>     Weather weather;
>     byte[] b1 = "Hello b1".getBytes();
>     byte[] b2 = "Hello b2".getBytes();
>     byte[] b3 = "Hello b3".getBytes();
>     
>     public void setWeather(Weather w){
>         weather = w;
>         w.setB1(b1);
>         w.setB2(b2);
>         w.setB3(b3);
>     }
>     public Weather getWeather(){
>         return weather;
>     }
> }
> /** The result printed out is */
> rpc.client.run:
>      [echo] F:\Software\java\axis2-1.3\samples\pojoguidespring\build.xml
>      [java] log4j:WARN No appenders could be found for logger (org.apache.axis2.
> util.Loader).
>      [java] log4j:WARN Please initialize the log4j system properly.
>      [java] Temperature               : 89.9
>      [java] Forecast                  : Sunny
>      [java] Rain                      : false
>      [java] How much rain (in inches) : 0.2
>      [java] Byte b1 : Hello b1
>      [java] Byte b2 : Hello b1
>      [java] Byte b3 : Hello b1

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org