HttpBinding+Static Rout Slip组件开发

原创 2006年06月13日 15:47:00

今天写了一个组件,用HttpClient向HttpBinding发送XML文档。HttpBC接收到后,发送给Static Rout Slip组件,由这具路由器,把XML分别发送到两个组件中:echo组件显示该消息,response组件在接收到这个消息后,经过简单的处理后,生成一个返回消息。

HttpClient代码如下所示:

import java.io.*;
import java.net.URL;
import java.net.URLConnection;

/**
 * @version $Revision: 356269 $
 */
public class HttpClient {

    public static void main(String[] args) throws Exception {

        URLConnection connection = new URL("http://localhost:8192/Service/").openConnection();
        connection.setDoOutput(true);
        OutputStream os = connection.getOutputStream();

        // Post the request file.
        FileInputStream fis = new FileInputStream("D://servicemix//httptest//request.xml");
       
        //Buffer
        byte[] buf = new byte[256];
        for (int c = fis.read(buf); c != -1; c = fis.read(buf)) {
         os.write(buf,0,c);
        }
        os.close();
        fis.close();

        // Read the response.
        BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            System.out.println(inputLine);
        }
        in.close();

    }
}

而由Http BC组件与router 组件,还有echo组件,response组件的配置如下:

Assemble配置:

<?xml version="1.0" encoding="UTF-8"?>
<jbi xmlns="http://java.sun.com/xml/ns/jbi" version="1.0">
    
   <service-assembly>
     <identification>
       <name>http-staticrout-demo</name>
       <description>http-staticrout-demo</description>
     </identification>
     <service-unit>
       <identification>
         <name>engine-ldt-su</name>
         <description>Contains staticrout service</description>
       </identification>
       <target>
         <artifacts-zip>engine-su.zip</artifacts-zip>
         <component-name>servicemix-eip</component-name>
       </target>
     </service-unit>
     <service-unit>
       <identification>
         <name>binding-ldt-su</name>
         <description>Contains the binding</description>
       </identification>
       <target>
         <artifacts-zip>binding-su.zip</artifacts-zip>
         <component-name>servicemix-http</component-name>
       </target>
     </service-unit>
 <service-unit>
       <identification>
         <name>component-ldt-su</name>
         <description>component created by ldt</description>
       </identification>
       <target>
         <artifacts-zip>lwechoreponse-su.zip</artifacts-zip>
         <component-name>servicemix-lwcontainer</component-name>
       </target>
     </service-unit>
    </service-assembly>
   
</jbi>

HttpBinding 组件的SU如下所示:

<?xml version="1.0"?>
<beans xmlns:http="http://servicemix.apache.org/http/1.0"
       xmlns:demo="urn:servicemix:http-binding">

 <http:endpoint service="demo:simple-service"
       endpoint="simple-service"
                role="consumer"
                locationURI="http://localhost:8192/Service/"
                defaultMep="http://www.w3.org/2004/08/wsdl/in-out"
                  />
               
</beans>

EIP中的router组件的SU如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:eip="http://servicemix.apache.org/eip/1.0"
  xmlns:demo="urn:servicemix:http-binding"
  xmlns:test="http://ldt.com/test">

 <eip:static-routing-slip service="demo:simple-service" endpoint="simple-service">
  <eip:targets>
    <eip:exchange-target service="test:echo" />
    <eip:exchange-target service="test:response" />
  </eip:targets>
 </eip:static-routing-slip>
</beans>

而echo组件与response组件以POJO组件的形式,部署到LWContainer中,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!-- START SNIPPET: servicemix -->
<beans xmlns:my="http://ldt.com/test"
 xmlns:sm="http://servicemix.apache.org/config/1.0">
  <classpath>
    <location>.</location>
  </classpath>
  <sm:serviceunit id="jbi">
    <sm:activationSpecs>
     
      <sm:activationSpec service="my:echo">
        <sm:component>
          <bean class="org.apache.servicemix.components.util.EchoComponent" />
     </sm:component>
      </sm:activationSpec>
      <sm:activationSpec service="my:response">
        <sm:component>
          <bean class="ldt.com.staticrouter.ReceiverComponent" />
        </sm:component>
      </sm:activationSpec>
     
    </sm:activationSpecs>
  </sm:serviceunit>
     
</beans>

 

这个模型得以成功的意义在于:很容易把一个消息发送给多个组件,当业务流程改变时,要向多个组件发送消息时,只需要向router组件的配置文件进行修改,然后把相关的组件部署到ESB中,就完成了业务流程的改变。在我们项目中的应用有:当凤凰公司产品对一部份等级的用户进行下调时,就能用到。比如只向VIP与会员发送降价消息。则在发送消息之前,在router组件中设定VIP接收组件与会员接收组件就完成了业务流程的调整。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JS static移动开发

  • 2017-05-25 08:44
  • 9.19MB
  • 下载

Silverlight通过httpBinding访问IIS宿主WCF

首语 本人在学习Silverlight 和 WCF的时候,各种问题层出不穷,在园子里面查阅大量的资料,尤其是Artech和Frank xu Lei 的WCF博文给我很大的帮助,在此衷心感谢两...

SLIP协议和PPP协议

SLIP协议和PPP协议都是数据链路层协议。SLIP和PPP是串行线上最常用的两个链路层通信协议,它们为在点对点链路上直接相连的两个设备之间提供一种传送数据报的方法。互联的两端设备可以是主机与主机、路...

2015-2016 ACM-ICPC, NEERC, Moscow Subregional Contest K题:King's Rout [topo排序]

给出N个点,M条有向边,求字典序最小的topo排序,注意有重边,且不一定连通。

genesis2000 rout edit

  • 2011-10-26 17:58
  • 650KB
  • 下载

2015-2016 ACM-ICPC, NEERC, Moscow Subregional Contest K. King’s Rout(拓扑排序)

【题目链接】http://codeforces.com/gym/100792/problem/K 【解题报告】 题目大意是,给你M个拓扑关系,输出合法的一个拓扑序列,并且该序列需要满足: 1尽可...

运放稳定性连载6:RO与ROUT(1)

作者:Tim Green,德州仪器公司 本系列第3 部分将着重澄清有关运放“输出阻抗”的一些常见误解。我们将会为运放定义两种不同的输出阻抗——RO和ROUT。RO在我们开始稳定正在驱动容性负载的...

ROUT 路由表添加

  • 2014-12-22 14:52
  • 10KB
  • 下载

基于SLIP协议节点与计算机组网

写在前面:所有需要在cmd输入的命令行都必须用英文输入法,不要简单将教程给的命令直接复制,有可能导致出错。 实验内容: ①学习6Lowpan网络如何与电脑上的IPv6网络连接 ②以及border ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)