XFire中进行文件上传

首先是web.xml和services.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> <!-- 上面的是web.xml的内容 --> <!-- 下面的是services.xml的内容 --> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>XFireUploadDemo</name> <namespace>http://www.jadyer.com/XFireUploadDemo</namespace> <serviceClass>com.jadyer.server.FileUpload</serviceClass> <implementationClass>com.jadyer.server.FileUploadImpl</implementationClass> </service> </beans>

然后是服务端暴露的接口极其实现类

package com.jadyer.server; public interface FileUpload { /** * 文件上传 * @param data 待上传文件的字节数组 * @param dest 上传的目的地路径 * @param fileName 自定义文件名 * @return String 上传成功则返回"OK",否则返回"Error:******"错误信息 * @see 本例中需要用到commons-fileupload和commons-io组件 */ public String upload(byte[] data, String dest, String fileName); } /** * Web服务端暴露的接口及其实现类 */ package com.jadyer.server; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class FileUploadImpl implements FileUpload { public String upload(byte[] data, String dest, String fileName) { if (null == data || 0 == data.length) { return "Error: 待上传文件的字节数组为空"; } if (null == dest || "" == dest) { return "Error: 上传的目的地路径为空"; } if (null == fileName || "" == fileName) { return "Error: 自定义文件名为空"; } if (-1 == fileName.lastIndexOf(".")) { return "Error: 自定义的文件名未指定后缀"; } ByteArrayInputStream in = null; // 文件输入流 BufferedInputStream bin = null; // 输入缓冲流 OutputStream out = null; // 输出流 BufferedOutputStream bout = null; // 输出缓冲流 try { // 得到字节数组输入流 in = new ByteArrayInputStream(data); // 得到输入缓冲流 bin = new BufferedInputStream(in); // 验证目的地路径 File folderSave = new File(dest); if (!folderSave.isDirectory()){ folderSave.mkdirs(); // 如果上传的目的地路径不存在,则新建目录 } // 验证目标文件 File fileSave = new File(dest + "/" + fileName); if (fileSave.exists()) {// 当目标路径下已存在该文件时 if (!fileSave.canWrite()){ return "Error:文件不可写入"; } } else if (!fileSave.createNewFile()){ return "Error:文件无法新建"; } // 得到输出流 out = new FileOutputStream(fileSave); // 得到输出缓冲流 bout = new BufferedOutputStream(out); /** * 循环 */ int intByte = 512 * 1024; // 缓冲区大小 byte[] fileData = new byte[intByte]; // 定义一个缓冲区 int intIndex = 0; while (-1 != (intIndex=bin.read(fileData, 0, intByte))) { bout.write(fileData, 0, intIndex); bout.flush(); } folderSave = null; fileSave = null; } catch (IOException e) { return ("Error:" + e.getMessage()); } finally { if (in != null) { try { in.close(); in = null; } catch (IOException e) { e.printStackTrace(); } } if (bin != null) { try { bin.close(); bin = null; } catch (IOException e) { e.printStackTrace(); } } if (out != null) { try { out.close(); out = null; } catch (IOException e) { e.printStackTrace(); } } if (bout != null) { try { bout.close(); bout = null; } catch (IOException e) { e.printStackTrace(); } } } return "OK"; } }

服务端代码至此完毕

下面是客户端的代码

对于客户端,我们又创建了一个Web Project,以便于与Web服务端的项目进行区分

这里客户端的代码生成,我们换一种方式:使用XFire提供的Eclipse插件

插件的安装说明,请参见:http://xfire.codehaus.org/Eclipse+Plugin

该插件安装成功后,选择Eclipse——File——New——Other——XFire——Code generation from WSDL document

然后在弹出的窗口中,对三个参数进行设置一下就可以了

WSDL URL or path: 可以输入Web服务方提供的WSDL地址,也可以选择Web服务方提供的WSDL文件

Output direectory: 选择客户端项目,至src节点,如/XFire_Upload_client/src,其中XFire_upload_client是我建立的客户端工程名字

Package: 选择客户端工程中已建好的,用于存放将要生成的客户端代码的包

最后点击Finish即可

注意:此时需要在客户端中,引入MyEclipse6.5提供的XFire 1.2 Core、HTTP Client、JAXB2 Libraries

接下来是两个JSP页面,分别用来上传文件和处理文件上传操作的

<%@ page pageEncoding="GBK"%> <form name="upload" action="upload.jsp" method="POST" enctype="multipart/form-data"> <table> <tr> <th>上传文件</th> </tr> <tr> <td><input type="file" name="file"></td> </tr> <tr> <td><input type="submit" value="上传"></td> </tr> </table> </form>

<%@ page pageEncoding="GBK"%> <%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%> <%@ page import="org.apache.commons.fileupload.FileItemFactory"%> <%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%> <%@ page import="java.util.List"%> <%@ page import="org.apache.commons.fileupload.FileItem"%> <%@ page import="com.jadyer.client.XFireUploadDemoClient"%> <%@ page import="com.jadyer.client.XFireUploadDemoPortType"%> <% FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List fileItems = upload.parseRequest(request); FileItem item = (FileItem)fileItems.get(0); byte[] fileBytes = item.get(); System.out.println("---------------------------------------------------------"); System.out.println("上传的文件名称:" + item.getName()); System.out.println("原始的文件名称:" + item.getName().substring(item.getName().lastIndexOf("//") + 1)); System.out.println("上传的文件大小:" + item.getSize()); System.out.println("文件的字节长度:" + fileBytes.length); System.out.println("文件的MINI类型:" + item.getContentType()); System.out.println("item.getFieldName:" + item.getFieldName()); System.out.println("---------------------------------------------------------"); XFireUploadDemoClient client = new XFireUploadDemoClient(); XFireUploadDemoPortType service = client.getXFireUploadDemoHttpPort(); //参数:文件的字节数组,上传目的地路径,文件名称 String returnValue = service.upload(fileBytes,"D://test",item.getName().substring(item.getName().lastIndexOf("//") + 1)); //打印返回值 System.out.println("returnValue = " + returnValue); %>

最后上传成功的文件,会保存在D:/test/目录下 ^_^ ^_^

使用XFire实现SOAP的webservice数据传输源码(java WebService之WSDL和SOAP实例(基于JAVA),博客地址:http://www.cnblogs.com/zhongshengzhen/p/4290670.html 立即下载

相关推荐

xfire webservice实现附件上传

NULL 博文链接:https://wentry.iteye.com/blog/1900188

JAVA应用XFire框架来实现WebServie的大文件传输功能之二(上传)

<br />xml文件:<br /><?xml version="1.0" encoding="UTF-8"?><br /><beans xmlns="http://xfire.codehaus.org/config/1.0"><br />    <service><br />       <name>HelloWorldService</name><br />       <namespace>http://localhost:8090/WebServiceTest<br />       </names

huangjl2000w的专栏 3075

使用XFire编写web service的上传文件的例子

一步一步教你用xFireweb service。入門非常適用的教程。

XFire 传输文件--文件上传与下载

使用XFire实现文件的传输 定义服务接口 服务实现

jastar的专栏 6646

JAVA应用XFire框架来实现WebServie的大文件传输功能之一(下载)

下面是文件下载功能,可以实现大文件的断点续传,文件上传部分代码略。xml文件:HelloWorldServicehttp://localhost:8090/WebServiceTestservice.IHelloWorldservice.HelloWorldImpl接

huangjl2000w的专栏 2503

实战Mule:利用Mule调用XFire发布的文件上传服务

[b]配置Mule和XFire环境[/b] 参考前面的文章[url=http://hideto.iteye.com/blog/65607]实战Mule:利用Mule调用XFire发布的Web服务[/url]。 [b]利用XFire发布一个文件上传Web服务UploadService[/b] 在Eclipse里新建项目webservice,目录结构如下: [code] webservi...

hideto 179

WebSerice学习笔记2——XFire基础

1.XFire是codehaus推出的下一代的java SOAP框架,通过提供的简单的API和支持标准协议,可以方面地开发webservice程序。XFire最大的特点就是支持将POJO通过非常简单的方式发布为WebService,同时还拥有很高的性能。2.XFire将 POJO 发布成 Web 服务的基本步骤:(1).创建 Web 服务接口,声明该 Web 服务对外暴露的接口;(2).创建 Web 服务实现类,为 Web 服务接口提供实现;(3).修改 XFire 框架的服务发布文件 ---- servi

Tony Chen的专栏 7205

xfire 与 spring

<br />xfire 释疑:<br />JSR 181 --指注释符方式定义webservice<br />JAXB 2.0 - 配置文件<br /> <br />XFire中的安全验证and自定义WSDL文档的参数名<br />http://blog.csdn.net/jadyer/archive/2010/12/22/6092308.aspx<br /> <br /><?xml version="1.0" encoding="UTF-8"?> <mappings> <mapping> <!

399

webservice xfire 的完整的demo例子,下载后即可运行

1. webservice xfire的完整demo,下载后可以直接导入eclipse调试。 2. 包括客户端和服务端,服务端需要部署到tomcat等web容器,启动服务端后可以通过客户端测试调用结果。 3. 工程已经将依赖的jar包一起包含,不需要重新下载第三方jar。

xfire--附件

  ---------spring+xfire进行附件传输   ----------------------------------Server-------------------------------------------- import java.io.File; import java.io.FileOutputStream; import java.io.IOExcept...

iaspecjack 217

weblogic 与 xfire 无法正确解析byte[]

最近遇到一个weblogic和xfire冲突问题, 运行环境为AIX或linux,webLogic版本:10.3.2.0,xfire:1.2.6,jdk:1.6.0-24 状况为,部署的项目中上传文件(不论大小)都会转成byte[],然后传送到后台处理,此时报错为 E ERROR][2016-10-25 20:19:30.008]Fault occurred! java.lang...

weixin_30484247的博客 157

学习Xfire的一些体会

因为以前也没有做过相关的webservice开发,对于Xfire也只是知道有这么一个框架。当然现在它已经变成apache基金会旗下的一个开源项目CXF。不过,现在依旧有很多公司还在用Xfirewebservice的开发,这说明它在业界一向是口碑不错的啊。 在学习一个框架时,我强烈建议将其自带的例子部置运行几次,这样对于理解以及搭建运行环境都有很大的帮助,也不容...

weixin_34060741的博客 372

阿翔编程学-Web Service详细解析及使用方法(完整版)包括XFire Axis CXF 安全 性能测试

 Web Service详细解析及使用方法        XFireXFire简介       它拥有一个轻量级的信息处理模块,通过STAX来与SOAP信息相结合。提供了一个工作在web services下的简单API,支持POJO和schema开发。XFire是 CodeHaus 推出的下一代的 Java SOAP框架,它构建了 POJO 和 SOA 之间的桥梁,主

曹翔 1万+

发布简单的webservice xfire

一、src目录下的配置文件! 1. src/main/resources/applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3....

wqq578 235

采用web service传输超大数据

因为以前也没有做过相关的web service开发,对于Xfire也只是知道有这么一个框架。当然现在它已经变成apache基金会旗下的一个开源项目CXF。不过,现在依旧有很多公司还在用Xfireweb service 的开发,这说明它在业界一向是口碑不错的啊。  在学习一个框架时,我强烈建议将其自带的例子部置运行几次,这样对于理解以及搭建运行环境都有很大的帮助,也不容易出错。 在这里,我主要

3457
上一篇: XFire中的安全验证and自定义WSDL文档的参数名
下一篇: XFire中进行文件下载
tanzi21
博客等级 码龄18年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值