Axis2中的webservice服务器端与客户端之间的大数据量的对象传递方法


public Raster2D dataView(String path) throws Exception{

Raster2D raster2D=RasterReadWrite.read(path);
System.out.println(path);
// Raster2D raster2D=new Raster2D(0, 0, 30, 10, 23, 9999, "hy");
//
return raster2D;
}


首先,看dataView是个wsdl描述服务的接口的一个具体:这里需要传递一个Raster2D这个实例,raster2D是个栅格数据,数据量比较大,在从服务端传递到客户端时,会出现,OutOfMeimery或Java heap 。。错误。

如何解决这一问题呢?
1.Axis2中是否有这个大数据量对象传递的方法,找了半天,自身查资料的能力有限,还是放弃了。
2.这跟我的在用SuperMap iClient开发时,发现查询的时候,数据量也很大,它是怎么实现的呢,于是查查资料,做了点功课。


public String dataView(String path) throws Exception{

Raster2D raster2D=RasterReadWrite.read(path);
System.out.println(path);
// Raster2D raster2D=new Raster2D(0, 0, 30, 10, 23, 9999, "hy");
[color=red] // 将Raster2D转化为 json对象
JSONObject jsonObject = JSONObject.fromObject(raster2D);
String rasterString=jsonObject .toString();[/color]

return rasterString;
}


就这样做了个转换将对象转换为JSON对象,然后toString变成字符串,对于基本对象字符串的传递那自然木有什么大的问题咯。

[img]http://dl.iteye.com/upload/attachment/0073/1699/dcb8c1b1-21cf-35be-8c10-dfd65a0fd582.png[/img]
接下来需要对在客户端解析Json对象,将数据利用起来。
---(daixu)

你可能感兴趣的:(Axis2中的webservice服务器端与客户端之间的大数据量的对象传递方法)