[ 永远的UNIX::UNIX技术资料的宝库 ]

首页 > 编程技术 > Java > 正文
 

重造Java ESB:细述JBI与ServiceMix (2)

作者:Daniel Rubio 来源:IT专家Java技术 (2005-11-25 10:53:06)

现在,再让我们把这些概念放到真实的JBI实现ServiceMix中。ServiceMix是完全用JBI的思想开发的一个开源项目。它可以支持多种绑定,包括HTTP、JMS、平面文件以及RSS,还提供了一系列类似BPEL、Schema Validation、JCA 和缓存等服务。

与ServiceMix协作的还有基于JMX的管理接口以及用来与JBI构件通信的对本地客户端API。尽管本文不对ServiceMix功能做进一步说明,但你可以很容易地下载该软件然后继续学习。下面,让我们来看看一个可部署在ServiceMix上的真实的JBI构件,这样你会对它有点感性认识。







Listing for JBI Components - 
File Sender & File Receiver.  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:my="http://servicemix.org/demo/">
  <!-- the JBI container -->
  <container id="jbi">
  <property name="useMBeanServer" value="true"/>
  <property name="createMBeanServer" value="true"/>
  <property name="dumpStats" value="true"/>
  <property name="statsInterval" value="10"/>
  
   <components>
     <!-- Write files to the outbox directory -->
      <component id="fileSender" 
   service="foo:fileSender"                   
   class="org.servicemix.components.file.FileWriter">
      <property name="directory" value="outbox"/>
      <property name="marshaler">
      <bean
         class="org.servicemix.components.
		 util.DefaultFileMarshaler">
      <property name="fileName">
      <bean
        class="org.servicemix.expression.
		JaxenStringXPathExpression">
      <constructor-arg value="concat
	  ('sample_', /sample/@id, '.xml')"/>
      </bean>
      </property>
       </bean>
      </property>
   </component>

   <!-- Look for files in the inbox directory -->
    <component id="filePoller" 
	service="foo:filePoller" 
          class="org.servicemix.components.
		  file.FilePoller"  
          destinationService="foo:fileSender">
      <property name="workManager" 
	  ref="workManager"/>
      <property name="file" value="inbox"/>
      <property name="period" value="1000"/>
    </component>   
   </components>    
 </container>

  <!-- the work manager (thread pool)
  for this container -->
  <bean id="workManager" 
      class="org.jencks.factory.
	  WorkManagerFactoryBean">
      <property name="threadPoolSize" 
	  value="30"/>
  </bean>

</beans>


JBI规格说明书本身并没有定义构件应该如何编码。请注意,ServiceMix用XML风格的语法定义了两个核心构件,关联到特定的类和属性。在把这种结构部署到ServiceMix以后,环境就会创建一种查询构件,负责从系统和其它构件中读取存档信息,然后把读取的值返回到文件系统。

该文件系统是JBI中非常基本的场景,因为信息就是从JBI环境(NMR)原样集中的,然后被返回到同样类型的绑定(文件系统)。但是很明显,一旦JBI环境有能力把任何业务逻辑适配成数据,例如BPEL或schema validation,然后重定向到其它类型的绑定,例如HTTP或RSS,那么就不只是返回到文件系统了。

正如你意识到的一样,当一用到JBI,操纵及分发数据的可能性就很大,但即使JBI用Java的方法实现了SOA,JSR-208规格说明书还是受到了批评。IBM和BEA是Java/J2EE领域的两个主要推动者,他们就不支持这个新项目。尽管如此,还是有像ServiceMix这样的小项目开发者和一些闭源开发组织打赌,一个培育良好的JBI市场将和J2EE的情况差不多。

假如你正在Java中使用Web services或者为了复杂的集成任务使用基于消息的设计,你应该对JBI的进展特别关心,因为它能为执行这样的任务提供更健壮的平台。就算你对JBI/ESB是否能加入J2EE协议栈还存有怀疑,继续关注还是有帮助的,因为它可能会成为应用服务器领域像Spring那样的事实上的“第三容器”或轻量级的容器扩展,为Java提供SOA能力。

(http://www.fanqiang.com)



 
 相关文章
Solaris 8 新增功能一览--(1)IPv6,LDAP,Java增强 2001-06-13 10:08:01
JAVA入门教程: 第 一 章  Java概述 2001-04-16 15:07:00
JAVA入门教程: 第 二 章 数 据 类 型 2001-04-16 15:08:15
JAVA入门教程: 第 三 章 运算符和表达式 2001-04-16 15:09:16
JAVA入门教程: 第 四 章 流 控 制 2001-04-16 15:10:00
JAVA入门教程: 第 五 章 数 组 2001-04-16 15:10:37
JAVA入门教程: 第 六 章 对 象、类、包和接口 2001-04-16 15:11:52
JAVA初学常见问题 2001-04-16 15:13:54
Java及Web应用(一) 2001-04-21 17:19:33
Java及Web应用(二) 2001-04-21 17:22:26
基于java servlet技术的留言簿 2001-04-21 17:36:45
Javascript源码:计算器 2001-05-19 08:42:55
Javascript源码:时间按钮 2001-05-17 14:26:12
Javascript源码:只显示当前日期 2001-05-17 14:28:10
Javascript源码:显示当前日期与时间 2001-05-14 16:45:08
JAVA Servlets简介 2001-05-30 12:10:00
很棒的JavaScript!!(弹性) 2001-06-03 10:08:00
Forte for Java简介与基础安装 2001-06-07 14:08:00
Java编程技巧(信号量,管道) 2001-06-08 15:00:00
JAVA的网络功能与编程 2001-06-26 14:08:00
 

★  感谢所有的作者为我们学习技术知识提供了一条捷径  ★
www.fanqiang.com