- 浏览: 2651958 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
80后的童年2:
深入浅出MongoDB应用实战开发网盘地址:https://p ...
MongoDB入门教程 -
shliujing:
楼主在不是精通java和php的前提下,请不要妄下结论。
PHP、CakePHP哪凉快哪呆着去 -
安静听歌:
希望可以一给一点点注释
MySQL存储过程之代码块、条件控制、迭代 -
qq287767957:
PHP是全宇宙最强的语言!
PHP、CakePHP哪凉快哪呆着去 -
rryymmoK:
深入浅出MongoDB应用实战开发百度网盘下载:链接:http ...
MongoDB入门教程
配置Mule和XFire环境
参考前面的文章实战Mule:利用Mule调用XFire发布的Web服务。
利用XFire发布一个文件上传Web服务UploadService
在Eclipse里新建项目webservice,目录结构如下:
其中services.xml如下:
让我们看看UploadService.java:
这里我们假设上传一张jpg图片,并将Base64binary encode为String,然后在UploadService里decode为byte[]并写入Disk。
利用Mule构建我们的ESB中心
在Eclipse里创建新项目esb,目录结构如下:
其中mule-services-config.xml配置了我们的UploadService:
看看我们怎么在前台index.jsp页面上传文件数据:
注意这里我们用到了commons-fileupload组件库,其他库采用上一篇实战Mule:利用Mule调用XFire发布的Web服务的库。
我们用org.codehaus.xfire.util.Base64工具类把上传文件的byte数组encode为String,并作为参数传递给Web服务。
测试及源代码
按照上篇文章实战Mule:利用Mule调用XFire发布的Web服务的讲述来启动两个Tomcat测试,打开
浏览器访问http://localhost:8080/esb并Browse一张jpg图片,然后点击提交,看看我们的"D:\"下是不是多了一张test.jpg?
参考前面的文章实战Mule:利用Mule调用XFire发布的Web服务。
利用XFire发布一个文件上传Web服务UploadService
在Eclipse里新建项目webservice,目录结构如下:
webservice src-service cn.hidetoishandsome.xfire.service IUploadService.java cn.hidetoishandsome.xfire.service.impl UploadService.java src-conf META-INF xfire services.xml web WEB-INF lib web.xml
其中services.xml如下:
<beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>UploadService</name> <namespace>http://localhost:9090/webservice/services/UploadService</namespace> <serviceClass>cn.hidetoishandsome.xfire.service.IUploadService</serviceClass> <implementationClass>cn.hidetoishandsome.xfire.service.impl.UploadService</implementationClass> </service> </beans>
让我们看看UploadService.java:
package cn.hidetoishandsome.xfire.service.impl; import java.io.File; import java.io.FileOutputStream; import org.codehaus.xfire.util.Base64; import cn.hidetoishandsome.xfire.service.IUploadService; public class UploadService implements IUploadService { public String upload(String encodedFileString) { FileOutputStream fos = null; File file = new File("D:\\test.jpg"); byte[] bytes = Base64.decode(encodedFileString); try { fos = new FileOutputStream(file); fos.write(bytes); fos.flush(); fos.close(); } catch (Exception e) { return "Wrong!"; } return "Success!"; } }
这里我们假设上传一张jpg图片,并将Base64binary encode为String,然后在UploadService里decode为byte[]并写入Disk。
利用Mule构建我们的ESB中心
在Eclipse里创建新项目esb,目录结构如下:
esb web WEB-INF lib mule-services-config.xml web.xml index.jsp
其中mule-services-config.xml配置了我们的UploadService:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mule-configuration PUBLIC "-//MuleSource //DTD mule-configuration XML V1.0//EN" "http://mule.mulesource.org/dtds/mule-configuration.dtd"> <mule-configuration id="Mule_Demo" version="1.0"> <mule-descriptor name="UploadService" inboundEndpoint="vm://uploadservice" implementation="org.mule.components.simple.BridgeComponent"> <outbound-router> <router className="org.mule.routing.outbound.OutboundPassThroughRouter"> <endpoint address="wsdl-xfire:http://localhost:9090/webservice/services/UploadService?wsdl&method=upload"/> </router> </outbound-router> </mule-descriptor> </mule-configuration>
看看我们怎么在前台index.jsp页面上传文件数据:
<%@ page import="org.mule.extras.client.MuleClient, org.mule.umo.UMOMessage, org.apache.commons.fileupload.disk.DiskFileItemFactory, org.apache.commons.fileupload.servlet.ServletFileUpload, org.apache.commons.fileupload.*, java.util.List, org.codehaus.xfire.util.Base64"%> <%@ page language="java" contentType="text/html; charset=UTF-8" %> <html> <head> <title>Mule Upload Example</title> </head> <body> <% try { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List fileItems = upload.parseRequest(request); FileItem item = (FileItem) fileItems.get(0); MuleClient client = new MuleClient(); byte[] bytes = item.get(); String encodedFileString = Base64.encode(bytes); UMOMessage message = client.send("vm://uploadservice", encodedFileString, null); out.print(message.getPayload()); } catch(Exception e) { } %> <form method="POST" name="uploadFile" action="" enctype="multipart/form-data"> <table> <tr><td> <input type="file" name="file"/></td><td><input type="submit" name="Go" value=" Go " /> </td></tr> </table> </form> <p/> </body> </html>
注意这里我们用到了commons-fileupload组件库,其他库采用上一篇实战Mule:利用Mule调用XFire发布的Web服务的库。
我们用org.codehaus.xfire.util.Base64工具类把上传文件的byte数组encode为String,并作为参数传递给Web服务。
测试及源代码
按照上篇文章实战Mule:利用Mule调用XFire发布的Web服务的讲述来启动两个Tomcat测试,打开
浏览器访问http://localhost:8080/esb并Browse一张jpg图片,然后点击提交,看看我们的"D:\"下是不是多了一张test.jpg?
- mule-xfire-upload.rar (6 KB)
- 下载次数: 299
评论
3 楼
toby2007
2009-03-10
你好,我刚开始研究mule,问个不成熟的问题,mule到底怎么使用呢?集成现有的项目就是把mule的lib加到项目里,加个mule-config.xml配置文件吗?还是需要把编译的服务组件class都拷到mule的加载目录?
希望能得到你的帮助
希望能得到你的帮助
2 楼
hideto
2007-06-07
这应该与采用的文件上传组件有关,commons-fileupload、smartupload等等不同的组件性能不同,但文件大小限制是可以配置的,一般1G以下都不会有问题。
1 楼
ming616
2007-06-06
如果是大文件呢,你所说明的方法最大能处理的文件大小是多少呢?
发表评论
-
Ubuntu 11.10 安装Java、JIRA/Confluence/FishEye、Nginx
2012-03-01 22:26 45391. 替换Ubuntu源 编辑/etc/apt/source. ... -
Android开发WeatherForecast程序
2009-03-28 13:38 62371,使用Googel API http://www.googl ... -
Android程序开发入门
2009-03-26 14:26 29901, 安装软件 1) JDK 2) Eclipse 3) AD ... -
Spring与ThreadLocal的讨论
2007-07-31 12:27 3875Singleton是不能使用非Singleton的实例的 比如 ... -
Spring基础培训ppt
2007-07-30 19:34 6165做ppt还真是累 更新了一下ppt. -
使用Jetty和DWR创建伸缩性Comet程序
2007-07-28 21:11 7435Ajax for Java developers: Write ... -
Java代码规范
2007-07-19 01:12 3407http://java.sun.com/docs/codeco ... -
Spring JavaConfig参考文档
2007-07-14 18:37 12795Spring JavaConfig参考文档 Spring Ja ... -
Tiger in the house
2007-07-14 02:49 8211很高兴花周五晚上2个小时的时间来阅读这样一本实用的书 -- 《 ... -
深入了解Java ClassLoader、Bytecode 、ASM、cglib
2007-07-05 16:50 19343一、Java ClassLoader 1,什么是ClassL ... -
Java里判断Image文件信息格式(GIF/PNG/JPG)/Size/Height/Width?
2007-06-05 18:01 92231,判断Image格式 用UE打开GIF/PNG/JPG格式的 ... -
推荐轻量级面向服务Web开发库Objot
2007-05-27 22:17 3173Objot是我们公司Aragon Consulting Gro ... -
实战Mule:利用Mule调用XFire发布的Web服务
2007-03-26 17:26 9312下载和安装XFire和Mule 参考http://hideto ... -
开源ESB引擎Mule初印象
2007-03-22 18:13 10595Mule is the leading open source ... -
XFire快速上手
2007-03-14 11:53 6656下载XFrie 首先,去http://xfire.codeha ... -
学习Eclipse RCP之Hello World
2007-03-12 17:57 4210创建插件项目 打开Eclipse并选择File->New ... -
Google Web Toolkit上手指南
2007-03-12 16:07 4722目录 安装Google Web Toolkit 构建一个简单的 ... -
5分钟学习Maven2
2007-03-12 01:12 5900安装 Maven是一个Java工具,所以你必须安装Java环境 ... -
在UDDI注册中心里使用WSDL
2007-03-09 15:55 7194原文链接:http://www.oasis-open.org/ ... -
Axis2快速上手指南
2007-03-01 23:22 74268原文链接:http://ws.apache.org/axis2 ...
相关推荐
博文链接:https://hideto.iteye.com/blog/65607
利用mule 服务总线代理 cxf发布的服务。其中详细的描述了cxf服务的发布的访问,以及如何使用mule的代理模式代理cxf的服务。步骤详细,有图有真相.
使用MuleEsb同时掉多个webservice,并返回到调用方。开发环境为AnyPoint3.7,将例子中的webservice接口修改成自己的即可运行。
利用mule服务总线代理cxf服务源码。
Mule ESB 是一个轻量级的基于java的企业服务总线和集成平台, 使得开发人员可以快速,简单的连接多个应用, 使得它们可以交换数据。 Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB...
mule in aciton:mule 实战,主要是社区成熟,文档丰富。开源esb
MuleESB Docker映像 此存储库包含。 您需要通过以下命令从Docker注册表中提取Mule docker映像: docker pull eddumelendez/mule 之后,您应该可以通过以下方式运行Mule docker映像: docker run -ti ...
vim-mule:用于VIM的Django生产力插件
您可以使用Mule来智能地管理节点之间的消息路由,数据映射,编排,可靠性,安全性和可伸缩性,而不是在系统,服务,API和设备之间创建点对点集成。 将其他系统和应用程序插入Mule,并使其处理系统之间的所有通信,...
关于在tomcat上进行mule多线程数量参数配置
企业服务总线ESB中用户数量大,文档丰富,社区成熟的一款开源ESB。
简介了企业服务总线mule的实现基本结构