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接收组件与会员接收组件就完成了业务流程的调整。

Silverlight通过httpBinding访问IIS宿主WCF

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

JS static移动开发

  • 2017年05月25日 08:44
  • 9.19MB
  • 下载

WCF HttpBinding 安全解析 (5)Basic验证(IIS宿主)

Basic验证方式是基于用户名/密码的验证方式,在Windows环境下,我们提供的是有效的Windows用户名和密码。但是Basic身份验证方式和Windows身份验证方式是有本质上的区别的。Basi...

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

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

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

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

genesis2000 rout edit

  • 2011年10月26日 17:58
  • 650KB
  • 下载

SLIP协议和PPP协议

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

part-24 输出阻抗Ro和Rout

或许标题让你很惊讶,输出阻抗怎么会有两个呢? 那么首先来说下他们的定义,Ro定义为开环输出阻抗,而Rout定义为闭环输出阻抗。 定义区分很明确但不够直观,看下图,Ro是由运放内部输出级决定的,不随...

GYM 100792k King's Rout (拓扑排序+优先队列)

题目:K. King’s Rout time limit per test 4 seconds memory limit per test 512 megabytes input stan...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HttpBinding+Static Rout Slip组件开发
举报原因:
原因补充:

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