当前位置:首页 > axis2实现WebService之复合类型数据的传递
axis2实现WebService之复合类型数据的传递
接着昨天的程序,今天又进了一步,学习了webservice的复合类型数据的传递,尤其是教程上没有的部分,我自己尝试着写,虽说耗费了一个下午的时间,但是还是非常值的,废话少说,看招!
在实际的应用中,不仅需要使用WebService来传递简单类型的数据,有时也需要传递更复杂的数据,这些数据可以被称为复合类型的数据。数组与类(接口)是比较常用的复合类型。在Axis2中可以直接使用将WebService方法的参数或返回值类型声明成数组或类(接口)。但要注意,在定义数组类型时只能使用一维数组,如果想传递多维数组,可以使用分隔符进行分隔,如下面的代码所示:
String[] strArray = new String[]{ \自行车,飞机,火箭\中国,美国,德国\
\超人,蜘蛛侠,钢铁侠\
上面的代码可以看作是一个3*3的二维数组。 在传递类的对象实例时,除了直接将数组类型声明成相应的类或接口,也可以将对象实例进行序列化,也就是说,将一个对象实例转换成字节数组进行传递,然后接收方再进行反序列化,还原这个对象实例。
下面的示例代码演示了如何传递数组与类(接口)类型
的数据,并演示如何使用字节数组上传图像。本示例的客户端代码使用Java编写。要完成这个例子需要如下几步:
一、实现服务端代码 [java] view plaincopy<span
style=\ import data.DataForm; public class ComplexTypeService { // 上传图像,imageByte参数表示上传图像文件的字节, // length参数表示图像文件的字节长度(该参数值可能小于imageByte的数组长度) public boolean uploadImageWithByte(byte[] imageByte, int length)
{ FileOutputStream fos = null; try { // 将上传的图像保存在D盘的test1.jpg文件中 fos = new
FileOutputStream(\ // 开始写入图像文件的字节 fos.write(imageByte, 0, length); fos.close(); } catch (Exception e) { return false; } finally { if (fos != null) { try
{ fos.close(); }
catch (Exception e)
{ } } } return true; } // 返回一维字符串数组 public String[] getArray() { String[] strArray = new String[]{ \自行车\飞机\火箭\ return strArray; } // 返回二维字符串数组 public String[] getMDArray() { String[] strArray = new String[]{ \自行车,飞机,火箭\中国,美国,德国\超人,蜘蛛侠,钢铁侠\ return strArray; } // 返回DataForm类的对象实例 public DataForm getDataForm() { return new
DataForm(); } // 将DataForm类的对象实例序列化,并返回序列化后的字节数组 public byte[] getDataFormBytes() throws Exception
{ java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream(); java.io.ObjectOutputStream oos = new java.io.ObjectOutputStream(baos);
oos.writeObject(new DataForm()); return baos.toByteArray(); } } </span> 二、实现DataForm类 [java] view plaincopy<span
style=\ public class DataForm implements java.io.Serializable { private String name = \ private int age = 20; setter…………getter方法 } </span> 三、发布WebService
由于本示例的WebService类使用了一个Java类(DataForm类),因此,在发布WebService之前,需要先将DataForm.class文件复制到<Tomcat安装目录
>\\webapps\\axis2\\WEB-INF\\classes\\data目录中,然后将ComplexTypeService.class文件复制到<Tomcat安装目录>\\webapps\\axis2\\WEB-INF\\pojo目录中,最后启动Tomcat(如果Tomcat已经启动,由于增加了一个DataForm类,因此,需要重新启动Tomcat)。发布之后的结果如下图所示 [java] view plaincopy<span
style=\ [java] view plaincopy<p align=\style=\
style=\align=\</span></p><p align=\style=\
src=\
共分享92篇相关文档