您的位置:首页 > 理论基础 > 计算机网络

使用MULE接收并处理HTTP请求

2011-01-10 10:37 295 查看
一:插件安装
Mule插件地址:
mule - http://dist.muleforge.org/mule-ide/updates/3.4/
二:配置mule安装目录
Preferences->Mule->Mule Distributions
三:新建Mule工程



mule-config.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
~~
<spring:beans>
<spring:bean class="com.test.SimpleProcessor"></spring:bean>
</spring:beans>
<custom-transformer name="SampleMuleRequestTransformer" class="com.test.SampleMuleRequestTransformer"/>

<model name="Sample">
<service name="httpReciver4">
<inbound>
<inbound-endpoint address="http://localhost:8086/test.html"  synchronous="true" transformer-refs="SampleMuleRequestTransformer">
</inbound-endpoint>
</inbound>
<component>
<spring-object bean="com.test.SimpleProcessor"></spring-object>
</component>
</service>
</model>

</mule>


com.test.SampleMuleRequestDto

package com.test;

public class SampleMuleRequestDto {
private String bodyXml;

private String clientIp;

public String getBodyXml() {
return bodyXml;
}

public void setBodyXml(String bodyXml) {
this.bodyXml = bodyXml;
}

public String getClientIp() {
return clientIp;
}

public void setClientIp(String clientIp) {
this.clientIp = clientIp;
}
}


com.test.SampleMuleRequestTransformer

package com.test;

import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.mule.api.MuleMessage;
import org.mule.api.transformer.TransformerException;
import org.mule.transformer.AbstractMessageAwareTransformer;
import org.mule.transport.http.HttpMessageAdapter;
import org.mule.util.IOUtils;

public class SampleMuleRequestTransformer extends
AbstractMessageAwareTransformer {
private static Log log = LogFactory
.getLog(SampleMuleRequestTransformer.class);

@Override
public Object transform(MuleMessage message, String outputEncoding)
throws TransformerException {
HttpMessageAdapter adapter = (HttpMessageAdapter) message.getAdapter();
String context = "";
try {
context = convertRequestToString(adapter.getPayload(),
outputEncoding);
} catch (IOException e) {
log.error("get request error", e);
return "get request error";
}
String ip = getIp(adapter);
SampleMuleRequestDto dto = new SampleMuleRequestDto();
dto.setBodyXml(context);
dto.setClientIp(ip);
return dto;
}

private String getIp(HttpMessageAdapter adapter) {
String address = (String) adapter
.getProperty("MULE_REMOTE_CLIENT_ADDRESS");
String ip = address.substring(1, address.indexOf(":"));
return ip;
}

private String convertRequestToString(Object src, String encoding)
throws IOException {
String srcString = null;
if (src instanceof InputStream) {
InputStream input = (InputStream) src;
try {
srcString = IOUtils.toString(input, encoding);
} catch (IOException iox) {
throw iox;
} finally {
IOUtils.closeQuietly(input);
}
} else {
srcString = src.toString();
}
return srcString;
}

}


com.test.SimpleProcessor

package com.test;

public class SimpleProcessor {
public String process(SampleMuleRequestDto context) {
System.out.println(context);
String responseXml="test";
return responseXml;
}

public String error(String message) {
return message;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: