快速业务通道

WebService大讲堂之Axis2(2):复合类型数据的传递 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
m类

DataForm是要返回的对象实例所对应的类,该类的实现代码如下:

package data;
public class DataForm implements java.io.Serializable
{
    private String name = "bill";
    private int age = 20;
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public int getAge()
    {
        return age;
    }
    public void setAge(int age)
    {
        this.age = age;
    }
}

三、发布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编写调用WebService的客户端代码

在客户端仍然使用了RPC的调用方式,代码如下:

package client;
import javax.xml.namespace.QName;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class ComplexTypeRPCClient
{
    public static void main(String[] args) throws Exception
    {
        RPCServiceClient serviceClient = new RPCServiceClient();
        Options options = serviceClient.getOptions();
        EndpointReference targetEPR = new EndpointReference(
                "http://localhost:8080/axis2/services/ComplexTypeService");
        options.setTo(targetEPR);
        // 下面的代码调用uploadImageWithByte方法上传图像文件
        /////////////////////////////////////////
        // 打开图像文件,确定图像文件的大小
        java.io.File file = new java.io.File("f:\\images.jpg");
        java.io.FileInputStream fis = new java.io.FileInputStream("f:\\images.jpg");
        // 创建保存要上传的图像文件内容的字节数组
        byte[] buffer = new byte[(int) file.length()];
        // 将图像文件的内容读取buffer数组中
        int n = fis.read(buffer);
        System.out.println("文件长度:" + file.length());
        Object[] opAddEntryArgs = new Object[]{ buffer, n };
        Class[] classes = new Class[]{ Boolean.class };
        QName opAddEntry = new QName("http://ws.apache.org/axis2","uploadImageWithByte");
        fis.close();
        // 开始上传图像文件,并输出uploadImageWithByte方法的返回传
        System.out.println(serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0]);
        /////////////////////////////////////////
        // 下面的代码调用了getArray方法,并返回一维String数组
        /////////////////////////////////////////  
        opAddEntry = new QName("http://ws.apache.org/axis2", "getArray");
        String[] strArray = (String[]) serviceClient.invokeBlocking(opAddEntry, 
                            new Object[]{}, new Class[]{String[].class })[0];
        for (String s : strArray)
            Syste

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号