HelloWorld
, 除測試 JBoss ESB 外透過這個 Sample 來說明 JBoss ESB 的內部運作。準備執行環境
預設JBoss SOA/ESB 5.0 及 MySQL Server 5.1 已配置這裡不再贅述,如要更換 SOA/ESB 配置的 Database 可參考另一篇:JBoss SOA/ESB DataSource Configuration using MySql- JBoss SOA Server 5.0.2.GA+
- JBoss ESB Server 4.10+
- MySQL Server 5.1
- Apache Ant 1.8.2+
%JBOSS_HOME%
設定為 JBoss SOA 的路徑jboss-soa-5.0\jboss-as
,須跟JBoss EAP做區別。
Quickstarts - HelloWorld Deployment & Test
- 將DOS Command 切換到如下路徑
%JBOSS_HOME%\samples\quickstarts\helloworld
,輸入ant deploy
,執行畫面如下,佈署成功的話會有.esb
Copy 到%JBOSS_HOME%\server\PROFILE\deploy\
, 以此 Sample 為例可在deploy
路徑下找到Quickstart_helloworld.esb
,佈署預設PROFILE
為default
,如要指定其它PROFILE
可將%JBOSS_HOME%\samples\quickstarts\conf\quickstarts.properties-example
更名為quickstarts.properties
並修改內容;另外如佈署前 JBOSS 已啟動則會重新佈署。 - Start MySQL/JBoss SOA ,於 DOS Command 輸入
ant runtest
,執行畫面如下 。 - 執行
ant runtest
可由%JBOSS_HOME%\samples\quickstarts\helloworld\build.xml
中看出是執行src\org\jboss\soa\esb\samples\quickstart\helloworld\test\SendJMSMessage.java
就是將 Message 傳送至 Queue 的方式來觸發 HelloWorld 的執行;而另一種執行方式為ant sendesb
則是 runSendEsbMessage.java
,這種方式則是呼叫jboss-esb.xml
中定義的 Service:<service category="FirstServiceESB" name="SimpleListener" description="Hello World">
,而呼叫端使用 ServiceName 不直接指定 QueueName,可對照如下的檔案jboss-esb.xml/build.xml/SendEsbMessage.java
。 - 接下來針對 JBoss ESB 內部的運作以
HelloWorld
做說明,Service
、Provider
、Listener
、Action
都在jboss-esb.xml
中定義,詳細可參考文末的相關連結。 - JMS Client:
SendJMSMessage.java
、SendEsbMessage.java
,呼叫 ESB Service 。 - Service:除了可發佈為對外的 Service 讓 JMS Client 呼叫外,內部也可以定義更小的 Service ,讓 ESB 內部重覆呼叫;以
ServiceCategory
+ServiceName
來識別 Service (從第3點可看出)。 - Provider:a.做為 ESB Service 對外的接口接收來自 JMS Client Request ,除了 JMS 的型式外還有
http、sql....
等多種型式。 b.也做為 ESB 內部的 Action 及 Service 之間傳遞訊息的通道,這部份使用 JMS - Queue/Topic 。 - Listener:監控 Provider 以取得 JMS Client 傳遞至 Provider 的 Message ,最後一個 Listener 會再將訊息傳遞至 Action,同樣除了 JMS 的型式外還有
http、sql....
等多種型式。 - Action:接收 Listener 傳至的訊息並做商業邏輯的處理,處理後再做輸出,輸出有多種型式,以 HelloWorld 來講即透過
SystemPrintln
將訊息輸出至 Console 。 - 下面的圖中 Service 包含 Listener 跟 Action ,這是依據
jboss-esb.xml
中定義 Service 的方式做這樣的區分,實際上一個可對外的 ESB Service 除了圖中的 JMS Client 外,原則上是包含其他所有的元素。
執行後的 JBoss SOA log 如下,這邊有做一些小修改,就是將
%JBOSS_HOME%\samples\quickstarts\helloworld\jboss-esb.xml
中的 action - SystemPrintln
的參數改為 <property name="printfull" value="true"/>
, printfull=false
只會在 Console 上輸出 body 的資訊(畫面中的紅色框),改為 printfull=true
可從畫面中看到顯示 message
的完整訊息。
相關設定可參考:
JBoss ESB學習筆記2——第一個ESB應用Hello World
JBoss ESB 4.x 介绍
JBossESB 4.4 GA Programmers Guide
JBoss Enterprise SOA Platform 5 ESB Services Guide - 3.3. Quickstart
沒有留言:
張貼留言