`
zqding
  • 浏览: 96702 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

利用AXIS开发Webservice传递文件

阅读更多

利用AXIS开发Webservice传递文件:

我们先来编写服务器代码

Java代码 

package com.chnic.webservice;   
  
import java.io.File;   
import java.io.FileOutputStream;   
import java.io.IOException;   
import java.io.InputStream;   
  
import javax.activation.DataHandler;   
  
public class FileTransfer {   
  
    public FileTransfer(){   
           
    }   
       
    public String transfer(DataHandler handler, String fileName){   
        String fullPath = "C:/" + fileName;   
        File file = new File(fullPath);   
        int flag = 0;   
        if(handler == null)   
            return "failure";   
        if(fileName == null)   
            return "failure";   
           
        try {   
            InputStream input = handler.getInputStream();   
            FileOutputStream fos = new FileOutputStream(file);   
            byte[] buffer=new byte[4096];   
            while((flag=input.read(buffer))!=-1){   
                fos.write(buffer,0,flag);   
            }   
            input.close();   
            fos.close();   
        } catch (IOException e) {   
            e.printStackTrace();   
            return "failure";   
        }   
        return "Success";   
    }   
}  
 

transfer方法是service端接受客户端传来文件的方法,方法里面有两个参数,第一个是DataHandler。这个类可以看成是一个传送器,通过专门的序列化类将文件序列化。这个类的具体方法可以查一下SUNAPI文档。第二个参数是一个String字符串,参数名就可以看出来,传递的是文件名。

这个方法从DataHandler得到一个输入流,从这个流里读出数据然后写到一个新文件里。这些都是一些基本的Java I/O操作。应该不会太难。服务器代码编写完之后下来是deploy.wsdd发布文件。

Xml代码 

<deployment xmlns="http://xml.apache.org/axis/wsdd/"    
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">  
       
    <service name="FileTransfer" provider="java:RPC">  
        <parameter name="className" value="com.chnic.webservice.FileTransfer"/>  
        <parameter name="allowedMethods" value="transfer"/>  
        <parameter name="scope" value="session"/>  
           
        <operation name="transfer"  
                   qname="operNS:transfer"  
                   xmlns:operNS="file"  
                   returnQName="fileSend"    
                   returnType="rtns:string"    
                   xmlns:rtns="http://www.w3.org/2001/XMLSchema">  
                      
            <parameter name="handler" type="tns:string"    
                       xmlns:tns="http://www.w3.org/2001/XMLSchema"/>  
            <parameter name="fileName" type="myns:DataHandler"    
                       xmlns:tns="http://www.w3.org/2001/XMLSchema"/>  
        </operation>  
           
        <typeMapping qname="myns:DataHandler" xmlns:myns="http://fileTransfer.sample"  
          languageSpecificType="java:javax.activation.DataHandler"  
          serializer="org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory"  
          deserializer="org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory"  
          encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>  
    </service>  
</deployment>  
 

这个配置文件也不多介绍了,前几篇关于这几个元素的介绍已经比较清楚了,在这里有必要提一下org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory 这个类。前面序列化对象的时候提到序列化不同对象的时候需要不同的工厂类,同样在序列化文件的时候就要用这个工厂类。编写完一切,启动tomcat然后发布服务。

服务器端的代码已经编写完成了,现在轮到客户端代码。因为是个简单的sample,所以做的事情也比较简单就是把C盘根目录上的一个文件通过webwervice储存到C盘,当然文件名要用另外一个。下面是客户端代码。

Java代码 

String fileName = "C:/sample.txt";   

DataHandler dh=new DataHandler(new FileDataSource(fileName));   

String endpoint="http://localhost:8080/axis/services/FileTransfer";   

  

Service service=new Service();   

Call call=(Call) service.createCall();   

call.setTargetEndpointAddress(new java.net.URL(endpoint));   

call.setOperationName(new QName(endpoint, "transfer"));   

QName qnameattachment=new QName("http://fileTransfer.sample",   

        "myns:DataHandler");   

  

call.registerTypeMapping(dh.getClass(),   

        qnameattachment,   

        JAFDataHandlerSerializerFactory.class,   

        JAFDataHandlerDeserializerFactory.class);   

  

call.addParameter("s1",qnameattachment,ParameterMode.IN);   

call.addParameter("s2",XMLType.XSD_STRING,ParameterMode.IN);   

call.setReturnClass(String.class);   

String ret=(String)call.invoke(new Object[] {dh,"aaaaaa.txt"});   

System.out.println("transfer success....");   

System.out.println(ret);  

客户端通过DataHandler取得源文件,之后注册DataHandler,注册两个输入参数和一个输出参数。之后传入相关的参数。新文件也在C盘下面名字为aaaaa.txt。运行测试代,控制台打出两句话。

transfer success....

Success

分享到:
评论

相关推荐

    利用AXIS调用webservice所需JAR包

    在描述中提到的"利用AXIS,通过wsdl的url直接调用webservice接口时所需要的jar包",这些JAR文件主要包括以下组件: - **axis.jar**:这是AXIS的核心库,包含了处理SOAP消息、WSDL解析和生成Stub的主要类。 - **...

    Axis实现webservice完整实例

    Axis 是 Apache 组织开发的 Java WebService 工具包,它简化了 WebService 的开发过程。Axis 支持 SOAP 1.1 和 1.2,以及 WSDL 1.1 标准,允许开发者快速创建服务端和客户端代码。 ### 3. Axis 服务端实现 - **...

    利用axis一步一步开发webservice

    本教程将详细介绍如何利用Axis来一步步开发Web服务。 1. **Web服务基础** 在理解如何使用Axis之前,首先要了解Web服务的基本概念。Web服务使用XML(Extensible Markup Language)作为数据交换格式,SOAP(Simple ...

    Java-tomcat-axis2开发webservice返回json数据

    标题“Java-tomcat-axis2开发webservice返回json数据”涉及的是使用Java、Tomcat服务器以及Axis2框架来创建Web服务,并返回JSON格式的数据。这是一个常见的技术组合,用于构建RESTful API或者提供服务化接口。下面...

    Axis2开发webservice总结.doc

    【标题】:Axis2开发Web服务总结 【摘要】:本文档主要总结了使用Axis2框架开发Web服务的相关知识,包括Web服务技术介绍、开发流程、必要的开发前准备以及具体的开发实例。 【详细内容】: 1. **Web Service技术...

    axis2 webService 详细教程

    6. ** 错误处理和调试**:理解如何处理可能出现的错误,以及如何利用Axis2的调试功能进行问题排查。 7. ** 高级主题**:可能包括WS-Security(Web服务安全)、WS-ReliableMessaging(可靠消息传递)等高级特性,...

    axis2 webservice实现文件上传删除功能

    在实现文件上传和删除功能时,我们将利用Axis2的这些特性。 1. **文件上传:** 文件上传通常涉及到客户端将文件内容转换为字节流,然后通过HTTP POST请求发送到服务器。在Axis2中,我们可以创建一个Web服务接口,...

    Axis2 webservice server plugin

    **Axis2 WebService服务器插件** Axis2是Apache软件基金会开发的一个开源Web服务框架,它提供了高度可扩展性和...通过熟悉并掌握这一插件的使用,开发者能够更好地利用Axis2的优势,构建高性能、高可扩展性的Web服务。

    axis2+spring webservice

    描述中提到的“简单例子:axis2整合spring发布webservice”,意味着我们将学习如何将这两个框架结合,以便通过Spring来管理和控制Web服务的生命周期,同时利用Axis2的Web服务处理能力。此外,“以及session的管理”...

    Eclipse用Axis框架开发WebService

    6. **生成 WebService**: 在 Eclipse 中,你可以利用 Axis 插件自动生成 WebService。通过向导,选择接口和实现类,Eclipse 将自动生成相关的 WSDL(Web 服务描述语言)文件和部署文件,完成 WebService 的发布。 7...

    axis2 axis webservice web 服务

    在描述中提到的“开发Axis WebService”,意味着利用Axis2框架创建Web服务。开发过程通常包括以下步骤: 1. **创建服务类**:编写Java类,实现服务接口,定义服务的行为。 2. **生成服务描述**:使用Axis2工具生成...

    Axis2生成webservice客户端通用依赖包

    总的来说,"Axis2生成webservice客户端通用依赖包"是一个方便开发者快速搭建和使用Web服务客户端的解决方案,它集成了必要的库,简化了项目集成过程,提高了开发效率。在实际开发中,理解和掌握这一方法将极大地提升...

    最实用的axis调用webService接口所需的jar包和案例

    本篇将详细介绍如何利用Axis调用WebService接口,并提供必要的jar包和案例分析。 一、Axis简介 Axis是一个Java Web服务客户端和服务器端的实现,支持SOAP 1.1和1.2,WSDL(Web服务描述语言),以及XML Schema。它...

    axis2 webService

    在描述中提到的“使用eclipse 插件 axis2 webService 实例”,是指利用Eclipse集成开发环境(IDE)中的Axis2插件来创建和测试Web服务的实践过程。Eclipse是一个广泛使用的Java IDE,其丰富的插件生态系统使得开发...

    Axis2(WebService)经典教程

    - **企业级集成**:利用WebService技术,Axis2可以整合多种技术栈和平台,提高系统的可扩展性和可维护性。 #### 三、Axis2核心功能详解 ##### 1. POJO实现0配置的WebService - **概念**:通过简单的Java类(POJO...

    webservice的axis2开发

    【WebService的基础知识】 1.1 WebService的定义与作用 WebService是一种按照W3C标准设计的软件系统,旨在实现跨网络的机器间交互操作。...学习AXIS2有助于深入理解WebService开发,并能快速构建实际应用。

    webservice服务上传文件

    当我们谈论“WebService服务上传文件”时,我们关注的是如何利用WebService技术实现在客户端与服务器之间传输文件。在这种场景下,Java Axis库是实现WebService的一个常用工具。 Axis是Apache组织开发的一个开源...

    手写axis实现webservice通讯

    在描述中提到的博文链接,虽然没有提供具体内容,但通常博主会分享详细的步骤或者关键代码片段,指导读者如何利用Axis实现Web服务的交互。通常,这样的教程会涵盖以下步骤: 1. **环境准备**:首先,你需要安装Java...

Global site tag (gtag.js) - Google Analytics