实战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]
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
[/code]
其中services.xml如下:
[code]
<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>
[/code]
让我们看看UploadService.java:
[code]
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!";
}

}
[/code]
这里我们假设上传一张jpg图片,并将Base64binary encode为String,然后在UploadService里decode为byte[]并写入Disk。

[b]利用Mule构建我们的ESB中心[/b]
在Eclipse里创建新项目esb,目录结构如下:
[code]
esb
web
WEB-INF
lib
mule-services-config.xml
web.xml
index.jsp
[/code]
其中mule-services-config.xml配置了我们的UploadService:
[code]
<?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>
[/code]
看看我们怎么在前台index.jsp页面上传文件数据:
[code]
<%@ 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>
[/code]
注意这里我们用到了commons-fileupload组件库,其他库采用上一篇[url=http://hideto.iteye.com/blog/65607]实战Mule:利用Mule调用XFire发布的Web服务[/url]的库。
我们用org.codehaus.xfire.util.Base64工具类把上传文件的byte数组encode为String,并作为参数传递给Web服务。

[b]测试及源代码[/b]
按照上篇文章[url=http://hideto.iteye.com/blog/65607]实战Mule:利用Mule调用XFire发布的Web服务[/url]的讲述来启动两个Tomcat测试,打开
浏览器访问[url]http://localhost:8080/esb[/url]并Browse一张jpg图片,然后点击提交,看看我们的"D:\"下是不是多了一张test.jpg?
ASTM D1937-26.pdf ASTM D1937-26 立即下载

相关推荐

Demo-Channel-Ranking-Input-Contract-Validator-v1.0-原创源码与文档.zip

原创 JavaScript 工程工具合集条目,包含完整源码、README、MIT License、原创与授权声明、3 项自动化测试、可复现合成示例、离线 HTML/JSON/SVG 报告和 1080×720 真实运行效果图。Node.js 18+ 可直接运行,零第三方运行依赖,适合开发者用于数据校验、工程审计、容量规划与交付复核。热点仅作为需求信号,不含榜单项目源码、模型权重、品牌素材或官方截图。

MULE 通过HTTP进行文件上传

工具 版本 mule-standalone 3.9.0 Anypoint-Studio 6.4.0 Postman 6.2.5 写在前面 今天想起来还没有尝试过Mule文件上传,毕竟上传文件是一个很常见的功能了,因此实实践做一个Mule文件上传的示例。使用Postman能够很轻松地模拟前台表单上传文件的过程。 首先看一下Mule接收...

随风潜入夜,润物细无声。 1801

高校如何科学评价科研项目,提升经费使用效益?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

mule实现FTP文件上传

 功能: 将某个文件放入特定的目录里(本demo是放入e:/temp目录), 然后将该文件上传到FTP上, 并且发送电子邮件通知文件已经上传-------------------------------------------------第一步----------------------------------------------------------------------首先写配制文

山,在那边 3195

unix服务上传文件,使用mule文件从Unix服务器传输到Windows服务

这不是骡子的问题。骡是注意魔术,它可以解决你所有的问题。这个问题是关于如何将文件从Unix传输到Windows。目前还不清楚你的Mule运行时间在哪里工作。它可能在Unix上,因为你提到Windows目标没有FTP,或者因为你用Anypoint-studio标记问题,它可能是Windows。假设您的运行时在Unix上。那么问题很简单,就是如何将文件从Unix推送到Windows。由于您的Windo...

weixin_35686386的博客 373

Mule 3.4.0中对Ftp协议的上传下载的应用

1.    前言 一直都听说 Mule 对 Ftp 和 Http 协议的支持很好,于是就关注了一下。 Mule 通过一系列的配置文件的配置就可以完成对 Ftp 服务器的下载和上传 ,这个还是很神奇的。 但是可惜的是, Mule 本身并不支持 FtpS 协议,只支持 SFTP ,这样对于工业级的使用上,未免有点不方便 。   2.    Mule 3.x 的基本知识 Mule 是一个开源

u010395804的专栏 2317

mule esb 文件传输

问题:如何使用mule esb 进行文件传输 应用场景: 局域网内不同服务器之间共享文件夹的形式传入文件,采用mule esb 实现共享文件夹之间文件传递的自动化,example: 服务器一(ip:10.66.88.1)上有个input共享文件夹,服务器二(10.66.88.2)上有个output文件夹,服务器一产生生成文件到input共享文件夹,人工copy到服务器二的output文件夹,服

安德里亚的成长 6263

Mule 3.6.1实现ftp上传文件

1. 编写java类,该类的主要的目的是将文件转化为二进制 package com.sigmatrix.ftp.service; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import

Alan_319的博客 841

XFire中进行文件上传

完整版见https://jadyer.github.io/

半步多 2517

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

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

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

huangjl2000w的专栏 2503

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

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

jastar的专栏 6646

高校如何提升科研项目评价的科学性与效率?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

上一篇: 开源ESB引擎Mule初印象
下一篇: CakePHP初探
hidetobj
博客等级 码龄19年 15粉丝 301原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值