(一) 建立JBossESB用户库 1、
在JBossTools
中,选择菜单“Windows->
references
”;2、
在打开的“Preferences
”对话框中,选择“Java->Build Path->User Libraries
”;3、
在右边的窗格中,选择“New
”新建一个名为JBossESB
的用户库;4、
选中JBossESB
用户库,选择“Add jars
”将JBoss
部署目录中如下子目录里的jar
包加入到JBossESB
用户库:jbossesb.sar
jbossesb.esb
jbpm.esb
jb
rules.esb
slsb.esb
smookes.esb
soap.esb
spring.esb
5、
选择“OK
”,结束创建JBossESB
用户库。(二) 建立JBossESB项目 1、
在JBossTools
中,选择菜单“File->New->
roject…
”;2、
在打开的“Select a wizard
”对话框中,选择“JavaEE->Utility Project
”,点击“Next
”继续;3、
在打开的“Utility Module
”对话框中,输入如下信息:Project Name
:HelloESB
Target Runtime
:JBoss 4.2 Runtime
Configuration
:Default Configuration for JBoss 4.2 Runtime
点击“Finish
”结束创建项目;4、
选中HelloESB
项目,右键单击,在弹出的上下文菜单中选择“Build Path->Configure Build Path…
”;5、
在弹出的属性对话框中,选择“Add Library…
”;6、
在弹出的“Add Library
”对话框中,选择“User Library
”,点击“Next
”继续;7、
在弹出的“User Library
”对话框中,选中上面创建的“JBossESB
”用户库,单击“Finish
”回到属性对话框;8、
单击“OK
”,结束。(三) 编写Action 1、
在JBossTools
中,选中HelloESB
项目,右键单击,在弹出的上下文菜单中选择“New->Class
”;2、
在弹出的“Java Class
”对话框中,输入如下信息:Package
:demo
Name
:MyJMSListenerAction
SuperClass
:org.jboss.soa.esb.actions.AbstractActionLifecycle
;单击“Finish
”,结束创建MyJMSListenerAction
类3、
在MyJMSListenerAction.java
文件中,创建一个sayHello
函数,最终代码如下:package demo;
import org.jboss.soa.esb.actions.AbstractActionLifecycle;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
public class MyJMSListenerAction extends AbstractActionLifecycle {
protected ConfigTree _config;
public MyJMSListenerAction(ConfigTree config) {
_config = config;
}
public void sayHello(Message msg) {
System.out.println(”hello ” + msg.getBody().get());
}
}
(四) 建立ESB配置文件 1、
在JBossTools
中,选中HelloESB
项目中的目录“src->META-INF
”,右键单击,在弹出的上下文菜单中选择“New->Other…
”;2、
在弹出的“Select a wizard
”对话框中,选择“ESB->ESB File
”,选择“Next
”继续;3、
在弹出的“ESB File
”对话框中输入如下信息:Name
:jboss-esb
单击“Finish
”结束创建(五) 配置JMS Providers 1、
双击打开jboss-esb.xml
文件,在“JBoss ESB Editor
”中选中“Providers
”,在右边窗格中选择“Add
”,在弹出的菜单中选择“JMS Provider
”;2、
在弹出的“ESB JMS Provider
”对话框中,输入如下信息:Name
:JBossMQ
Connection Factory
:ConnectionFactory
单击“Next
”继续;3、
在弹出的“ESB JMS Bus
”对话框中输入如下信息:ID
:helloworld_gateway_channel
单击“Finish
”结束创建,4、
选中“Providers->JBossMQ-> helloworld_gateway_channel->Filter
”,在右边的窗格中输入:Destination Name
:queue/helloworld_request_gateway
5、
选中“JBossMQ
”再添加一个ID
为helloworld_esb_channel
的EJB JMS Bus
;6、
选中“Providers->JBossMQ-> helloworld_esb_channel->Filter
”,在右边的窗格中输入:Destination Name
:queue/helloworld_request_esb
(六) 配置Services 1、
在“JBoss ESB Editor
”中选中“Services
”,在右边窗格中选择“Add
”,2、
在弹出的对话框中输入如下信息:Name
:HelloWorld
Category
:HelloWorld
Description
:a simple listener to say hello
选择Finish
结束;3、
选中“Services->HelloWorld->Listeners
”,在右边窗格中选择“Add
”,在出现的菜单中选择“JMS Listener
”;4、
在弹出的对话框中输入如下信息:Name
:helloworld_jms_gateway
Channel ID Ref
:helloworld_gateway_channel
选择“Finish
”结束5、
在右边的属性窗格中输入如下信息:MaxThreads
:1
Is Gateway
:true
6、
重复3~5
再添加一个JMS Listener
Name
:helloworld_jms_esb
Channel ID Ref
:helloworld_esb_channel
7、
选中“Services->HelloWorld->Actions
”,在右边窗格中选择“Add
”;8、
在出现的对话框中输入如下信息:Name
:DemoListener
Class
:demo. MyJMSListenerAction /*
对应于前面创建的java
类 */
Process
:sayHello /*
对应于前面创建java
类的方法 */
选择Finish
结束(七) 建立JMS配置文件 在JBossTools
中,选中src
目录,新建一个名为helloworld-queue-service.xml
文件,内容如下:<?xml version=“1.0″ encoding=“UTF-8″?>
<server>
<mbean code=“org.jboss.mq.server.jmx.Queue”
name=“jboss-cn.esb.helloworld:service=Queue,name=helloworld_request_gateway”>
<depends optional-attribute-name=“DestinationManager”>
jboss.mq:service=DestinationManager</depends>
</mbean>
<mbean code=“org.jboss.mq.server.jmx.Queue”
name=“jboss-cn.esb.helloworld:service=Queue,name=helloworld_request_esb”>
<depends optional-attribute-name=“DestinationManager”>
jboss.mq:service=DestinationManager</depends>
</mbean>
</server>注:该文件创建jbossesb配置文件指定的JMS 消息队列。 (八) 建立Deployment.xml 在JBossTools
中,选中“src->META-INF
”目录,新建一个名为deployment.xml
文件,内容如下:<?xml version=“1.0″ encoding=“UTF-8″?>
<jbossesb-deployment>
<depends>jboss-cn.esb.helloworld:service=Queue,name=helloworld_request_gateway</depends>
<depends>jboss-cn.esb.helloworld:service=Queue,name=helloworld_request_esb</depends>
</jbossesb-deployment> (九) 打包与部署 1、
在JBossTools
中,选择菜单“Window->Show view->Other->JBossTools->
roject archives
”;2、
在“Project archives
”视图中,创建一个名为helloworld.esb
类型为JAR
的archives
;3、
选中刚才创建的helloworld.esb
,新建一个includes
为“*/
”的fileset
;右键单击,在出现的上下文菜单中选择“Build archive
”创建helloworld.esb
包;4、
在JBossTools
中,选择“Servers
”视图,将helloworld.esb
部署到JBoss
服务器上;启动JBoss
,打开浏览器访问http://localhost:8080/jbossesb
。如果成功部署,就会看到:(十) 测试 注:这里的测试通过往JMS消息队列里发请求来测试 1、
在JBossTools
中,新建一个test
包下的TestESB.java
文件,其代码如下:package test;
import java.util.Hashtable;
import javax.jms.JMSException;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class TestESB {
QueueConnection conn;
QueueSession session;
Queue que;
@SuppressWarnings(”unchecked”)
public void setupConnection() throws JMSException, NamingException
{
Hashtable properties = new Hashtable();
properties.put(Context.INITIAL_CONTEXT_FACTORY,
“org.jnp.interfaces.NamingContextFactory”);
properties.put(Context.URL_PKG_PREFIXES,
“org.jboss.namingrg.jnp.interfaces”);
properties.put(Context.PROVIDER_URL, “jnp://127.0.0.1:1099″);
InitialContext iniCtx = new InitialContext(properties);
Object tmp = iniCtx.lookup(”ConnectionFactory”);
QueueConnectionFactory qcf = (QueueConnectionFactory) tmp;
conn = qcf.createQueueConnection();
que = (Queue) iniCtx.lookup(”queue/helloworld_request_gateway”);
session = conn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
conn.start();
System.out.println(”Connection Started”);
}
public void stop() throws JMSException
{
conn.stop();
session.close();
conn.close();
}
public void sendAMessage(String msg) throws JMSException {
QueueSender send = session.createSender(que);
ObjectMessage tm = session.createObjectMessage(msg);
send.send(tm);
send.close();
}
public static void main(String args[]) throws Exception
{
TestESB sm = new TestESB();
sm.setupConnection();
sm.sendAMessage(” jboss-cn.com! “);
sm.stop();
}
}
2、
右键单击TestESB.java
文件,以java
应用程序的方式运行,就会在控制台看到:10:41:02,281 INFO [STDOUT] hello jboss-cn.com!恭喜您,第一个JBossESB
服务开发成功!