JBoss ESB开发实践及笔记
基于JBoss的ESB开发网上中文资料很少,这几天因为工作的需要,研究了一下,希望用得着的朋友一起来讨论下!
?
必读资料:《JBoss SOA P 4.3.GA.ESB.Programmers_Guide.pdf》
如果要使用规则引擎,你还需要参考:《JBoss SOA P 4.3.GA.Rules_Reference_Guide.pdf》
?
分享的条目:
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 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" service-name="TwoSimpleListener"/> </property></action>?你可能还需要处理通知,利用通知引擎来做些事情,比如当服务处理异常时,用邮件通知我,你可能的配置代码如下:
<property name="notification-details"> <NotificationList type="err"> <target from="allan119119@sina.com" sendTo="faqee@126.com" subject="message test" message="can resv?" > <attachment>c:\crm.log</attachment> </target> </NotificationList> <NotificationList type="ok"> <target class="NotifyConsole"/> </NotificationList></property>?你可能还需要处理些被动的侦听服务,那么你可以使用Schedule,支持Cron表达式,比如侦听文件服务器上的文件变动或文件内容变动等。?