JBoss ESB开发实践及笔记

基于JBoss的ESB开发网上中文资料很少,这几天因为工作的需要,研究了一下,希望用得着的朋友一起来讨论下!

 

必读资料:《JBoss SOA P 4.3.GA.ESB.Programmers_Guide.pdf》

如果要使用规则引擎,你还需要参考:《JBoss SOA P 4.3.GA.Rules_Reference_Guide.pdf》

 

分享的条目:

v SOA 以及 ESB 相关概念
v JBoss ESB 开发环境的搭建
v JBoss ESB Project 以及结构说明
v ESB 服务端开发
v ESB 客户端调用
v 高级主题  — Web Services 支持
v 高级主题  — Drools 规则引擎 *


概念性的东西我不作介绍了,只是将有关开发的东西和大家做些交流:

开发环境的搭建你必须要安装JDK 1.6+,Eclipse JEE 3.5+,JBoss SOA Server或JBoss ESB Server,Ant,JBoss Tools的Eclipse插件,要注意的是下载JBoss的有些东西需要在Redhat网站注册个账号才行哦!

ESB开发中涉及到的主要问题,客户端调用方式,你可以利用JMS或ServiceInvoker中的任何一种,其中ServiceInvoker的客户端类似调用代码如下:
System.setProperty("javax.xml.registry.ConnectionFactoryClass","org.apache.ws.scout.registry.ConnectionFactoryImpl");
String[] args = new String[]{"FirstServiceESB", "SimpleListener", "我是中文!hello world esb invoked"};
Message esbMessage = MessageFactory.getInstance().getMessage();	
esbMessage.getBody().add(args[2]);	    	
new ServiceInvoker(args[0], args[1]).deliverAsync(esbMessage);
在ESB服务的编写中可能会遇到的主要问题:

消息过滤,在jboss-esb.xml中类似的配置代码如下:
<service 
        	category="FirstServiceESB" 
        	name="MessageFilterListener" 
        	description="Filter a Message Based on Content">
            <listeners>
                <jms-listener name="gw-channel"
                    busidref="quickstartGwChannel"
                    is-gateway="true"
                />
                <jms-listener name="esb-channel"
                              busidref="quickstartEsbChannel"
                />
            </listeners>
            <actions mep="OneWay">
                <action class="org.jboss.soa.esb.actions.MessageFilter" name="MessageFilter">
                    <property name="ruleSet" value="FilterRules.drl"/>
                    <property name="ruleReload" value="true"/>
                    <property name="destinations">
                        <route-to destination-name="DemoDestination" service-category="Test" service-name="NextService"/>
                    </property> 
                    <property name="object-paths">
                    	<object-path esb="body.'org.jboss.soa.esb.message.defaultEntry'" />
                    </property>
                </action>
            </actions>
        </service>
 路由,在Action中可定义静态路由和动态路由(基于内容的规则引擎实现),其中静态路由的可能的配置代码如下:
<action name="srouteAction" class="org.jboss.soa.esb.actions.StaticRouter">
       <property name="destinations">
       	  <route-to service-category="FirstServiceESB" service-name="TwoSimpleListener"/>
       </property>
</action>
 你可能还需要处理通知,利用通知引擎来做些事情,比如当服务处理异常时,用邮件通知我,你可能的配置代码如下:
<property name="notification-details">
      <NotificationList type="err">
       <target class="NotifyEmail" from="[email protected]" sendTo="[email protected]" subject="message test" message="can resv?" >
          <attachment>c:\crm.log</attachment>
       </target>
      </NotificationList>
      <NotificationList type="ok">
       <target class="NotifyConsole"/>
      </NotificationList>
</property>
 你可能还需要处理些被动的侦听服务,那么你可以使用Schedule,支持Cron表达式,比如侦听文件服务器上的文件变动或文件内容变动等。
 

你可能感兴趣的:(eclipse,jboss,redhat,jms,SOA)