




已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
JBoss ESB學習筆記2第一個ESB應用Hello World續(xù)上文搭建好開發(fā)環(huán)境后就可以開發(fā)ESB應用了。本文介紹第一個ESB應用Hello, World。說明:本文及后續(xù)文章雖非百分百的原創(chuàng),但畢竟包含本人的努力和付出,所以希望大家轉(zhuǎn)載時務請注明出處:,謝謝合作。 1. 新建ESB工程如下兩圖所示,輸入項目名稱,選中JBoss ESB Runtime。 2. 基本概念介紹在進行下面的操作之前有必要介紹JBoss ESB的一些基本概念,如果沒有這些概念作基礎,而僅僅是機械的操作,那是沒有意義的。2.1 Provider在JBoss ESB中,使用Provider定義來提供ESB對外的入口,常用的Provider有:jms-provider,fs-provider,ftp-provider,schedule-provider,sql-provider,http-provider,jms-jca-provider,jbr-provider等。2.1.1 jms-provider用戶定義JMS的接口入口,對外發(fā)布的接口可以通過JMS的形式提供出去,通過在jboss-esb.xml文件中定義JMS 的Provider,同時定義JMS監(jiān)聽器,就可以從監(jiān)聽器接收到來自客戶端的JMS請求。2.1.2 fs-provider文件系統(tǒng)的接口入口,可以定義接入的文件目錄,文件擴展名等信息,當特定的文件被透過任意途徑放到接入目錄后,監(jiān)聽fs-provider的監(jiān)聽器就可以接收到消息,并可以讀取到文件的內(nèi)容,文件被處理后,還可以被移動到特定的目錄下,也可以修改文件的后綴名以標識文件已經(jīng)被接口程序處理過了。 2.1.3 ftp-providerFTP入口,可以定義入口FTP服務器的IP,用戶名,密碼,目錄路徑等信息。當有文件被上傳到定義好的FTP服務器目錄時,接口入口對應的監(jiān)聽器就可以監(jiān)聽到文件,并將文件內(nèi)容通過Message的形式傳遞給接口程序。這個接口適合于通過FTP和我們系統(tǒng)進行通訊的接口。2.1.4 sql-provider數(shù)據(jù)庫表接口。這個Provider適合于表接口程序。外部系統(tǒng)對某一個表的數(shù)據(jù)庫操作可以被對這個Provider進行監(jiān)聽的監(jiān)聽器捕捉到,并調(diào)用相關的Action進行處理。 2.1.5 http-providerHTTP方式的接口接入定義,通過http-provider,可以向外提供HTTP形式的接口,并接收來自這個接口的HTTP請求,可以通過請求獲取到請求參數(shù)。除了通過HTTP接口提供對外接口以外,也可以通過這個接口方式來提供服務集成,我們可以在門戶上指定ESB上的HTTP-Provider接口,并通過這個接口去訪問外部接口,再將外部接口返回的數(shù)據(jù)封裝成HTML能識別的格式,發(fā)送給門戶上的Portal,從而實現(xiàn)服務集成。2.1.6 jbr-provider通過jbr-provider,可以實現(xiàn)Web Service的接口中介功能。2.2 ServiceService是JBoss ESB對外發(fā)布的服務,一個Service一般包括兩個部分,一個是Listener,一個是Action。Listener負責監(jiān)聽客戶端接口發(fā)起者發(fā)送過來的消息,Action負責處理接口請求。一個Service可以有多個Listener,對多個接口入口請求;一個Service也可以有多個Action,不同的Action可以有不同的處理邏輯,也可以通過Router將多個Service組裝起來,形成服務鏈條的形式提供服務。 2.3 ListenerListener是JBoss ESB提供的各類形式的provider的監(jiān)聽器,通過Listener,可以獲取客戶端發(fā)送到Provider上的各類消息。2.3.1 jms-listenerJMS的監(jiān)聽器,通過jms-listener來監(jiān)聽通過jms-provider進來的消息。2.3.2 fs-listener文件系統(tǒng)的監(jiān)聽器,通過fs-listener來監(jiān)聽通過fs-provider進來的消息。2.3.3 ftp-listenerftp監(jiān)聽器,通過ftp-listener來監(jiān)聽通過ftp-provider進來的消息。2.3.4 sql-listenersql監(jiān)聽器,通過sql-listener監(jiān)聽通過sql-provider進來的消息。2.3.5 http-gatewayhttp監(jiān)聽器,監(jiān)聽來自http-provider的消息。 2.3.6 udp-listenerudp-listener用來監(jiān)聽指定端口的socket請求,udp-listener相對其他listener比較特殊,他無需定義provider,可以直接通過listener配置來監(jiān)聽指定端口的socket消息。 2.4 ActionAction是在Service節(jié)點下面配置的,用于相應接口請求。Action可以是我們開發(fā)人員開發(fā)的繼承了AbstractActionLifecycle類的java class,可以在配置中指定process屬性,表明這個Action要執(zhí)行的方法名稱,也可以指定exceptionMethod屬性,標明當異常出現(xiàn)的時候,要執(zhí)行的方法名稱。除了可以開發(fā)Action來處理業(yè)務邏輯以外,還可以通過Action來做數(shù)據(jù)轉(zhuǎn)換,服務路由等。JBoss ESB提供了若干自帶的Action。 3 Provider定義在JBoss ESB Editor中,新建JMS Provider,輸入名稱和連接工廠名稱,分別是:JBossMQ和ConnectionFactory。點擊下一步,輸入通道ID:helloworldChanel。 4 定義消息隊列在JBoss ESB Editor中,選中Filter節(jié)點,輸入目的地名稱:queue/helloworld選中目的地類型為QUEUE(隊列),之后保存。 5 創(chuàng)建服務在JBoss ESB Editor中,選中Service節(jié)點,新建服務,輸入服務名稱,類別以及描述信息,F(xiàn)inish即可?;氐絁Boss ESB Editor,設置invmScope屬性為GLOBAL。該這只的具體含義以后會做介紹,這里不做說明。 6 創(chuàng)建JMS Listener在JBoss ESB Editor中,選中Listener節(jié)點,新建JMS Listener,輸入監(jiān)聽器的名稱,同時選中之前創(chuàng)建的通道的ID。最后在JBoss ESB Editor中設置該監(jiān)聽器的is-gateway屬性為true。這使得ESB可以直接處理JMS消息。 If you send a message directly to another service internally, it must be an EsbMessage! Only Gateways are capable of receiving real JMS messages. 某網(wǎng)友語 7 Action類定義由于這里使用的是自定義的action,所以在配置action之前需要編寫一個擴展了AbstractActionLifecycle類的action類,類定義如下: Java代碼 1 /* 2 * Project Name: helloworld 3 * File Name: com.thu.afa.esb.jbossesb.action.HelloWorldAction.java 4 * Copyright: Copyright (c) 2010 5 * Company: 6 */ 7 package com.thu.afa.esb.jbossesb.action; 8 9 import org.jboss.soa.esb.actions.AbstractActionLifecycle; 10 import org.jboss.soa.esb.helpers.ConfigTree; 11 import org.jboss.soa.esb.message.Message; 12 13 /* 14 * Class Name: HelloWorldAction 15 * Description: 16 * author Afa 17 * date 2010-9-6 18 * version 1.0 19 */ 20 public class HelloWorldAction extends AbstractActionLifecycle 21 22 protected ConfigTree configTree; 23 24 public HelloWorldAction(ConfigTree configTree) 25 26 this.configTree = configTree; 27 28 29 public Message doPrintMessage(Message message) throws Exception 30 31 System.out.println(message.getBody().get(); 32 33 return message; 34 35 Action類說明:在action類中必須有一個ConfigTree類型的屬性以及一個包含ConfigTree類型參數(shù)的構(gòu)造方法,而邏輯處理方法(這里是doPrintMessage)的參數(shù)和返回值都必須是Message。 8 Action配置在JBoss ESB Editor中,選中Action節(jié)點,新建Custom Action,如下圖所示,輸入名稱,類路徑,并指定處理方法。到此,ESB工程的配置基本完成,下面可以進行部署了。 9 ESB部署首先在esbcontent文件夾下新建jbm-queue-service.xml文件,內(nèi)容如下:Xml代碼 36 37 38 41 42 jboss.messaging:service=ServerPeer 43 44 jboss.messaging:service=PostOffice 45 46 然后在esbcontent/META-INF目錄下新建deployment.xml文件,內(nèi)容如下:Xml代碼 47 48 jboss.esb.helloworld.destination:service=Queue,name=helloworld 49 50 將整個工程導出成ESB文件,并將其保存至%JBOSSESB_SERVER_HOME%serverdefaultdeploy目錄下,然后啟動ESB服務器。工程文件目錄結(jié)構(gòu)如下圖所示。 10 ESB客戶端新建Java工程,并將以下Jar包添加到classpath(注:所有的Jar包都可以在jboss-esb-server中找到),客戶端測試代碼如下所示。 Java代碼 51 /* 52 * Project Name: helloworldclient 53 * File Name: com.thu.afa.esb.jbossesb.client.HelloWorldClient.java 54 * Copyright: Copyright (c) 2010 55 * Company: 56 */ 57 package com.thu.afa.esb.jbossesb.client; 58 59 import java.util.Properties; 60 61 import javax.jms.Message; 62 import javax.jms.Queue; 63 import javax.jms.QueueConnection; 64 import javax.jms.QueueConnectionFactory; 65 import javax.jms.QueueSender; 66 import javax.jms.QueueSession; 67 import javax.naming.Context; 68 import javax.naming.InitialContext; 69 70 /* 71 * Class Name: HelloWorldClient 72 * Description: 73 * author Afa 74 * date 2010-9-6 75 * version 1.0 76 */ 77 public class HelloWorldClient 78 79 private QueueConnection connection; 80 private QueueSession session; 81 private Queue queue; 82 83 public void setupConnection() throws Exception 84 85 System.out.println(Connection Starting.); 86 87 Properties properties = new Properties(); 88 properties.put(Context.INITIAL_CONTEXT_FACTORY, erfaces.NamingContextFactory); 89 properties.put(Context.URL_PKG_PREFIXES, org.jboss.naming:erfaces); 90 properties.put(Context.PROVIDER_URL, jnp:/:1099); 91 InitialContext context = new InitialContext(properties); 92 93 QueueConnectionFactory factory = (QueueConnectionFactory) context.lookup(ConnectionFactory); 94 connection = factory.createQueueConnection(); 95 queue = (Queue) context.lookup(queue/helloworld); 96 session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE); 97 connection.start(); 98 99 System.out.println(Connection Started); 100 101 102 public void stop() throws Exception 103 104 if(connection != null) connection.stop(); 105 if(session != null) session.close(); 106 if(connection != null) connection.close(); 107 108 109 public void sendMessage(String text) throws Exception 110 111 QueueSender sender = session.createSender(queue); 112 Message message = session.createTextMessage(text); 113 sender.send(message); 114 sender.close(); 115 116 117 /* 118 * Title: 119 * Method Name: main 120 * Description: 121 * author: Afa 122 * date: 2010-9-6 123 * param args 124 */ 125 public static void main(String args) throws Exception 126 127 HelloWorldClient main = new HelloWorldClient(); 128 main.setupConne
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)保直付醫(yī)院綠色通道建設與管理協(xié)議
- 未成年人探視期間安全保護及責任落實協(xié)議
- 新能源汽車行業(yè)區(qū)域分銷合作伙伴合同
- 護理支持性理論
- 傳染病日常衛(wèi)生監(jiān)督實務要點
- 腫瘤血栓診療難點與對策
- 腦外科引流護理規(guī)范與實踐
- 大班語言:冬天的禮物
- 酒店安保服務協(xié)議書(2篇)
- 轉(zhuǎn)運病人護理查房
- 2025年人教版小學一年級下學期奧林匹克數(shù)學競賽試題(附答案解析)
- 《社會保險知識普及教學課件》
- 2025委托維修服務合同模板
- 延安通和電業(yè)有限責任公司招聘筆試真題2024
- 上海市松江區(qū)2024-2025學年七年級下學期期中數(shù)學試卷
- 2024年新疆吉木乃縣事業(yè)單位公開招聘輔警23名筆試題帶答案
- 昆明理工大學津橋?qū)W院教職工招聘真題2024
- 陜西電網(wǎng)面試試題及答案
- 品質(zhì)組長考試試題及答案
- 2025年高考語文大題突破訓練:微寫作(北京專用)解析版
- 設備合同三方付款協(xié)議
評論
0/150
提交評論