功能: 将某个文件放入特定的目录里(本demo是放入e:/temp目录), 然后将该文件上传到FTP上, 并且发送电子邮件通知文件已经上传
-------------------------------------------------第一步----------------------------------------------------------------------
首先写配制文件
"http://mule.mulesource.org/dtds/mule-configuration.dtd">
这里需要对这段配制进行一些说明:
这里采用MulticastingRouter的方法,来实现发送到多个endpoint, 第一个是实现将文件写到FTP, 第二个是实现电子邮件的发送
-------------------------------------------------第二步----------------------------------------------------------------------
service.FtpUpload文件
package service;
import java.util.HashMap;
import java.util.Map;
import org.mule.umo.UMOEventContext;
import org.mule.umo.UMOMessage;
import org.mule.umo.lifecycle.Callable;
public class FtpUpload implements Callable {
public Object onCall(UMOEventContext eventContext) throws Exception {
UMOMessage message = eventContext.getMessage();
//获取文件名
String fileName =message.getProperty("originalFilename").toString();
byte[] buf = message.getAdapter().getPayloadAsBytes();
return buf;
}
}
这个类是对e:/temp目录的监听,一旦有文件到达该目录后,就会将这个文件以byte[]的形式放入UMOMessage里
-------------------------------------------------第三步----------------------------------------------------------------------
transformer.SendMail文件
package transformer;
import org.mule.impl.RequestContext;
import org.mule.transformers.AbstractTransformer;
import org.mule.umo.UMOEventContext;
import org.mule.umo.UMOMessage;
import org.mule.umo.transformer.TransformerException;
public class SendMail extends AbstractTransformer {
public SendMail(){
super();
// this.registerSourceType(byte.class);
}
@Override
protected Object doTransform(Object src, String encoding)
throws TransformerException {
UMOEventContext eventContext= RequestContext.getEventContext();
UMOMessage message = eventContext.getMessage();
String fileName =message.getProperty("originalFilename").toString();
return "you have received a email named "+fileName;
}
}
注意:
1. 这个类并不是实现转换目的,而是实现构造电子邮件内容的功能
2. 这个类返回的是String类型, 但是smtp要求被发送的邮件是javax.mail.Message, 所以还要进行一个转换--stringToEmailMessage它使用了mule本身的org.mule.providers.email.transformers.StringToEmailMessage类
3. 这样写是不支持中文的,因为mule本身是用ISO-8859-1, 所以还得做相应的调整,这将会在以下的详解中提到
-------------------------------------------------第三步----------------------------------------------------------------------
写一个main函数, 这个主要的作用是方便调试
public static void main(String[] args) throws Exception {
String rootPath = System.getProperty("user.dir");
String filePath = rootPath +"//conf//mule-ftp-upload-configl.xml";
MuleXmlConfigurationBuilder builder = new MuleXmlConfigurationBuilder();
builder.configure(filePath);
}
下面就可以调试了.
-------------------------------------------------完成--------------------------------------------------------------------------