文档详情

基于spring+cxf实现用户文件传输的webservice.docx

发布:2018-12-24约1.63万字共15页下载文档
文本预览下载声明
基于spring+cxf实现用户文件传输的webservice 1 引言 在EDI系统中,用户数量较多,并且信息化水平差距较大,所以对报文的收发方式具有多样化的需求。相对其他访问方式而言,http(s)的访问在防火墙限制、安全性等方面都有较好表现。因此,有相当部分用户提出通过webservice发送报文的需求。本文介绍了如何采用cxf结合spring框架实现具有文件上传和相关查询功能的webservice,以便其在使用.net或其他框架开发的MIS系统中能够自动生成报文并上传。同时,该webservice还提供了用户基本身份验证功能,对访问请求进行限制。 Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝集成。 2.功能分析 (1)该webservice需要提供报文上传到服务器上的基本功能。 (2)用户可以查询已经发送的报文历史信息列表,包括报文名称、报文大小和发送时间。 (3)由于不是开放服务,所以还需要对用户身份进行基本认证。 3.服务构建 (1)定义要提供的服务接口 首先要定义webservice输入输出的数据类型,主要包括报文名称、报文类型、报文发送时间以及处理文件流的DataHandler属性。代码片段如下: public class MsgItem { //报文名称 private String filename; //报文类型 private String filetype; //传输时间 private String trans_time; //文件流指针 private DataHandler msgfile; public String getFilename() { return filename; } public void setFilename(String filename) { this.filename = filename; } public String getFiletype() { return filetype; } public void setFiletype(String filetype) { this.filetype = filetype; } public String getTrans_time() { return trans_time; } public void setTrans_time(String trans_time) { this.trans_time = trans_time; } public DataHandler getMsgfile() { return msgfile; } public void setMsgfile(DataHandler msgfile) { this.msgfile = msgfile; } } 在定义好输入输出的数据结构后,就可以定义要提供的业务服务接口。在该接口中使用@WebService注释来声明接口名称和命名空间,使用@WebResult注释来声明返回变量名称,使用@WebParam注释来声明传入变量名称,代码片段如下: /** *报文上传服务接口 */ @WebService(name = MsgTrans, targetNamespace = /com/test/busw/service/file) public interface MsgTrans { /** * 上传报文 * @param item 报文实例 * @return 报文上传结果消息 */ @WebResult(name = up_ret) public String UploadMsg ( @WebParam(name = msg_item) MsgItem item ); /** * 查询报文信息列表 * @return 报文信息列表 */ @WebResult(name = msgList) public ListObject select_msglist (); } (2)实现接口 在完成接口的定义之后,可以开始编写java类来实现上述接口。此处使
显示全部
相似文档