//处理Bean
import java.io.ByteArrayInputStream;
import java.util.Date;
import java.util.Map;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
public class TestBean {
public TestBean(){
super();
}
public String showBody(Exchange exchange) throws Exception {
System.out.println("\r\n\r\n");
Message in=exchange.getIn();
byte []bs=read((ByteArrayInputStream)in.getBody());
String msg=new String(bs,"utf-8");
System.out.println("showBody-->"+msg);
return msg;
}
private byte[] read(ByteArrayInputStream in){
int len=in.available();
byte []data=new byte[len];
in.read(data,0,data.length);
return data;
}
public void showHeads(Map<String, Object> h){
System.out.println("\r\n\r\n");
System.out.println("showHeads--> heads="+h);
}
public Request parseRequest(Exchange exchange,String body) {
System.out.println("\r\n\r\n");
Message in=exchange.getIn();
Map<String, Object> ms=in.getHeaders();
Request r=new Request();
r.setHead(ms);
System.out.println("parseRequest--> heads="+ms+",body="+body);
r.setBody(body);
return r;
}
public String process(Request req) {
System.out.println("\r\n\r\n");
System.out.println("process--> heads="+req.getHead()+",body="+req.getBody());
String s="你好,系统时间为:"+new Date();
return s;
}
public void response(Exchange out,String html) {
System.out.println("\r\n\r\n");
System.out.println("response-->"+html);
out.getOut().setHeader(Exchange.CONTENT_TYPE, "text/html" + "; charset=utf-8");
//out.getOut().setHeader(Exchange.CONTENT_TYPE, "application/octet-stream" + "; charset=utf-8");
out.getOut().setBody(html);
}
public String toHtml(Object r) {
System.out.println("\r\n\r\n");
System.out.println("toHtml--> object="+r);
return String.valueOf(r);
}
/*
--> parse(request) //got head and body
--> response=route(request) //call remote system by head[system_id][service_id][method_id]
--> write_response(response)
配置文件名为:system_id_value.ini, 如:opg.ini
发起方:在head提供 system_id, service_id,method_id 三个参数,
esb在收到请求后,将请求转发到配置的 地址
system_url= //远程的接口 地址
uri_${service_id}_${method_id}= //远程方法uri, 和 system_url 组成完整的接口url
head_dealer=
body_dealer=
system_id=opg
service_url=http://127.0.0.1/opg //rmi, soa ,
method_uri=head //或者 url即将 /service_id/method_id 加到 service_url 后面
request_type=json //或者 map , 请求的数据格式:目标需要的 请求数据格式 json 或 httpRequest的 Map
response_type=json //text, 返回的数据格式
service_id
*/
}
camel-config.xml 主要内容:
<camelContext id="x2" xmlns="http://camel.apache.org/schema/spring">
<route id="enter">
<from uri="servlet:time"/>
<to uri="bean:testBean?method=showHeads(${in.headers})"/>
<to uri="direct:toProcess"/>
</route>
<route>
<from uri="direct:toProcess"/>
<to uri="bean:testBean?method=showBody(${exchange})"/>
<to uri="bean:testBean?method=parseRequest(${exchange},${body})"/>
<to uri="bean:testBean?method=process(${body})"/>
<to uri="bean:testBean?method=response(${exchange},${body})"/>
</route>
</camelContext>
用浏览器访问: http://127.0.0.1:8080/esb/camel/time 可获得系统的时间。
本测试主要体验了: direct 和 bean , exchange 的基本用法。
下面是用 karaf 过程的一些记录:
//注册 camel feature 到 karaf
feature:repo-add mvn:org.apache.camel.karaf/apache-camel/2.17.1/xml/features
//安装 camel 到 karaf
feature:install camel
feature:install -v camel-blueprint
//查看camel运行状态
feature:list | grep camel
//查看 repo
feature:repo-list
//加 camel-blueprint
feature:install camel-blueprint
mvn compile
mvn install / mv clean install
bundle:install mvn:com.packt.camel/chapter3/1.0-SNAPSHOT
bundle:list
bundle:start id
bundle:stop id
camel:context-list
bundle:uninstall chapter3
feature:install camel-jetty
相关推荐
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用
jar包,亲测可用