发现JBossESB网上流传甚广的就是JBoss学习笔记系列了,这个系列资料还可以,但如果你一上来就看这个的话,感觉还是有点蒙,因为根本不明白这样做到底是为什么。所以看了之后,也会发现自己只能照着葫芦画一个葫芦,连一个瓢也画不了。
helloworld这句话从我们一进行编程的世界就经常听到,那么第一个例子,我们就来helloworld。
ESB发布之后,会是一个.esb格式的zip压缩包,里面的结构如下:
其中:
jboss-esb.xml:包含service、listener、action、provider的配置,具体都是什么,后面会说到的。
deployment.xml:是可选的,有两种情况下会用这个。一种是一个.esb依赖令一个.esb,用来指定加载顺序,另一种就是确定.esb的部署范围。不明白没关系,有的是例子使你明白这个的用处的。
java classes:是你自己的包含包层次的action
jars:这个我想不用说吧,就是添加你的应用依赖的包
queue-service.xml:如果你的jboss-esb.xml中的provider使用的queue或者topic,你可以在通过这个来进行部署。使用其它方式督署也可以,不过ESB的官方文档中明确说明的建议采取此种方式。
public class MyJMSListenerAction extends AbstractActionLifecycle { protected ConfigTree _config; public MyJMSListenerAction(ConfigTree config) { _config = config; } public Message displayMessage(Message message) throws Exception{ System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"); System.out.println("Body: " + message.getBody().get()) ; System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"); return message; } }怎样写Action,自己查文档吧,没啥意思。
<?xml version = "1.0" encoding = "UTF-8"?> <jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd" parameterReloadSecs="5"> <providers> <jms-provider name="JBossMQ" connection-factory="ConnectionFactory"> <jms-bus busid="quickstartGwChannel"> <jms-message-filter dest-type="QUEUE" dest-name="queue/quickstart_helloworld_Request_gw" /> </jms-bus> <jms-bus busid="quickstartEsbChannel"> <jms-message-filter dest-type="QUEUE" dest-name="queue/quickstart_helloworld_Request_esb" /> </jms-bus> </jms-provider> </providers> <services> <service category="FirstServiceESB" name="SimpleListener" description="Hello World"> <listeners> <jms-listener name="JMS-Gateway" busidref="quickstartGwChannel" is-gateway="true" /> <jms-listener name="helloWorld" busidref="quickstartEsbChannel" /> </listeners> <actions mep="OneWay"> <action name="action1" class="org.jboss.soa.esb.samples.quickstart.helloworld.MyJMSListenerAction" process="displayMessage" /> <action name="action2" class="org.jboss.soa.esb.actions.SystemPrintln"> <property name="printfull" value="false"/> </action> <!-- The next action is for Continuous Integration testing --> <action name="testStore" class="org.jboss.soa.esb.actions.TestMessageStore"/> </actions> </service> </services> </jbossesb>
<?xml version="1.0" encoding="UTF-8"?> <server> <mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_esb" xmbean-dd="xmdesc/Queue-xmbean.xml"> <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends> <depends>jboss.messaging:service=PostOffice</depends> </mbean> <mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_gw" xmbean-dd="xmdesc/Queue-xmbean.xml"> <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends> <depends>jboss.messaging:service=PostOffice</depends> </mbean> </server
<?xml version="1.0" encoding="UTF-8"?> <server> <mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_esb"> <depends optional-attribute-name="DestinationManager"> jboss.mq:service=DestinationManager </depends> </mbean> <mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_gw"> <depends optional-attribute-name="DestinationManager"> jboss.mq:service=DestinationManager </depends> </mbean> </server>
<jbossesb-deployment> <depends>jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_esb</depends> <depends>jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_gw</depends> </jbossesb-deployment>