首页 > 其他 > 详细

Camel的direct,Bean测试

时间:2016-05-25 02:21:26      阅读:274      评论:0      收藏:0      [点我收藏+]

//处理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

?

?

?

Camel的direct,Bean测试

原文:http://iwin.iteye.com/blog/2298223

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!