(一) 建立JBossESB用戶庫
1、 在JBossTools中,選擇菜單“Windows->references”; 2、 在打開的“Preferences”對(duì)話框中,選擇“Java->Build Path->User Libraries”; 3、 在右邊的窗格中,選擇“New”新建一個(gè)名為JBossESB的用戶庫; 4、 選中JBossESB用戶庫,選擇“Add jars”將JBoss部署目錄中如下子目錄里的jar包加入到JBossESB用戶庫: jbossesb.sar jbossesb.esb jbpm.esb jbrules.esb slsb.esb smookes.esb soap.esb spring.esb 5、 選擇“OK”,結(jié)束創(chuàng)建JBossESB用戶庫。 (二) 建立JBossESB項(xiàng)目
1、 在JBossTools中,選擇菜單“File->New->roject…”; 2、 在打開的“Select a wizard”對(duì)話框中,選擇“JavaEE->Utility Project”,點(diǎn)擊“Next”繼續(xù); 3、 在打開的“Utility Module”對(duì)話框中,輸入如下信息: Project Name:HelloESB Target Runtime:JBoss 4.2 Runtime Configuration:Default Configuration for JBoss 4.2 Runtime 點(diǎn)擊“Finish”結(jié)束創(chuàng)建項(xiàng)目; 4、 選中HelloESB項(xiàng)目,右鍵單擊,在彈出的上下文菜單中選擇“Build Path->Configure Build Path…”; 5、 在彈出的屬性對(duì)話框中,選擇“Add Library…”; 6、 在彈出的“Add Library”對(duì)話框中,選擇“User Library”,點(diǎn)擊“Next”繼續(xù); 7、 在彈出的“User Library”對(duì)話框中,選中上面創(chuàng)建的“JBossESB”用戶庫,單擊“Finish”回到屬性對(duì)話框; 8、 單擊“OK”,結(jié)束。 (三) 編寫Action
1、 在JBossTools中,選中HelloESB項(xiàng)目,右鍵單擊,在彈出的上下文菜單中選擇“New->Class”; 2、 在彈出的“Java Class”對(duì)話框中,輸入如下信息: Package:demo Name:MyJMSListenerAction SuperClass:org.jboss.soa.esb.actions.AbstractActionLifecycle; 單擊“Finish”,結(jié)束創(chuàng)建MyJMSListenerAction類 3、 在MyJMSListenerAction.java文件中,創(chuàng)建一個(gè)sayHello函數(shù),最終代碼如下: 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項(xiàng)目中的目錄“src->META-INF”,右鍵單擊,在彈出的上下文菜單中選擇“New->Other…”; 2、 在彈出的“Select a wizard”對(duì)話框中,選擇“ESB->ESB File”,選擇“Next”繼續(xù); 3、 在彈出的“ESB File”對(duì)話框中輸入如下信息: Name:jboss-esb 單擊“Finish”結(jié)束創(chuàng)建 (五) 配置JMS Providers
1、 雙擊打開jboss-esb.xml文件,在“JBoss ESB Editor”中選中“Providers”,在右邊窗格中選擇“Add”,在彈出的菜單中選擇“JMS Provider”; 2、 在彈出的“ESB JMS Provider”對(duì)話框中,輸入如下信息: Name:JBossMQ Connection Factory:ConnectionFactory 單擊“Next”繼續(xù); 3、 在彈出的“ESB JMS Bus”對(duì)話框中輸入如下信息: ID:helloworld_gateway_channel 單擊“Finish”結(jié)束創(chuàng)建, 4、 選中“Providers->JBossMQ-> helloworld_gateway_channel->Filter”,在右邊的窗格中輸入: Destination Name:queue/helloworld_request_gateway 5、 選中“JBossMQ”再添加一個(gè)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、 在彈出的對(duì)話框中輸入如下信息: Name:HelloWorld Category:HelloWorld Description:a simple listener to say hello 選擇Finish結(jié)束; 3、 選中“Services->HelloWorld->Listeners”,在右邊窗格中選擇“Add”,在出現(xiàn)的菜單中選擇“JMS Listener”; 4、 在彈出的對(duì)話框中輸入如下信息: Name:helloworld_jms_gateway Channel ID Ref:helloworld_gateway_channel 選擇“Finish”結(jié)束 5、 在右邊的屬性窗格中輸入如下信息: MaxThreads:1 Is Gateway:true 6、 重復(fù)3~5再添加一個(gè)JMS Listener Name:helloworld_jms_esb Channel ID Ref:helloworld_esb_channel 7、 選中“Services->HelloWorld->Actions”,在右邊窗格中選擇“Add”; 8、 在出現(xiàn)的對(duì)話框中輸入如下信息: Name:DemoListener Class:demo. MyJMSListenerAction /* 對(duì)應(yīng)于前面創(chuàng)建的java類 */ Process:sayHello /* 對(duì)應(yīng)于前面創(chuàng)建java類的方法 */ 選擇Finish結(jié)束
(七) 建立JMS配置文件
在JBossTools中,選中src目錄,新建一個(gè)名為helloworld-queue-service.xml文件,內(nèi)容如下:
<?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> 注:該文件創(chuàng)建jbossesb配置文件指定的JMS 消息隊(duì)列。
(八) 建立Deployment.xml
在JBossTools中,選中“src->META-INF”目錄,新建一個(gè)名為deployment.xml文件,內(nèi)容如下:
<?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”視圖中,創(chuàng)建一個(gè)名為helloworld.esb類型為JAR的archives; 3、 選中剛才創(chuàng)建的helloworld.esb,新建一個(gè)includes為“*/”的fileset;右鍵單擊,在出現(xiàn)的上下文菜單中選擇“Build archive”創(chuàng)建helloworld.esb包; 4、 在JBossTools中,選擇“Servers”視圖,將helloworld.esb部署到JBoss服務(wù)器上;啟動(dòng)JBoss,打開瀏覽器訪問http://localhost:8080/jbossesb。如果成功部署,就會(huì)看到:
(十) 測(cè)試
注:這里的測(cè)試通過往JMS消息隊(duì)列里發(fā)請(qǐng)求來測(cè)試
1、 在JBossTools中,新建一個(gè)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應(yīng)用程序的方式運(yùn)行,就會(huì)在控制臺(tái)看到: 10:41:02,281 INFO [STDOUT] hello jboss-cn.com! 恭喜您,第一個(gè)JBossESB服務(wù)開發(fā)成功!
|