使用SpringJMS輕松實(shí)現(xiàn)異步消息傳遞_第1頁(yè)
使用SpringJMS輕松實(shí)現(xiàn)異步消息傳遞_第2頁(yè)
使用SpringJMS輕松實(shí)現(xiàn)異步消息傳遞_第3頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、使用 Spring JMS 輕松實(shí)現(xiàn)異步消息傳遞異步進(jìn)程通信是面向效勞架構(gòu) SOA 個(gè)重要的組成局部,因?yàn)槠髽I(yè) 里 很多系統(tǒng)通信,特別是與外部組織間的通信,實(shí)質(zhì)上都是異步的。 Java 消息效勞 JMS 是用于編寫(xiě)使用異步消息傳遞的 JEE 應(yīng)用程序的 API 。傳統(tǒng) 的使用 JMS API 進(jìn)行消息傳遞的實(shí)現(xiàn)包括多個(gè)步驟,例如 JNDI 查詢隊(duì)列連 接工廠和 Queue 資源,在實(shí)際發(fā)送和接收消息前創(chuàng)立一個(gè) JMS 會(huì)話。Spring 框架那么簡(jiǎn)化了使用 JEE 組件包括 JMS 的任務(wù)。它提供的模板 機(jī) 制隱藏了典型的 JMS 實(shí)現(xiàn)的細(xì)節(jié), 這樣開(kāi)發(fā)人員可以集中精力放在處理 消息的實(shí) 際工

2、作中,而不用擔(dān)憂如何去創(chuàng)立,訪問(wèn)或去除 JMS 資源。本文將對(duì) Spring JMS API 作一個(gè)概述,并通過(guò)一個(gè)運(yùn)行在 JBoss MQ 效勞 器上的web例程來(lái)介紹如何使用Spring JMS API來(lái)異步處理發(fā)送和 接收消 息。我將通過(guò)傳統(tǒng) JMS 實(shí)現(xiàn)和 Spring JMS 實(shí)現(xiàn)兩者間的比較,來(lái) 展示使用 Spring JMS 處理消息是如何的簡(jiǎn)單和靈活。異步消息傳遞和面向效勞架構(gòu)在現(xiàn)實(shí)中,大多數(shù) web 請(qǐng)求都是同步處理的。例如,當(dāng)用戶要登入一 個(gè)網(wǎng) 站,首先輸入用戶名和密碼,然后效勞器驗(yàn)證登錄合法性。如果驗(yàn)證 成功,程序 將允許該用戶進(jìn)入網(wǎng)站。這里,登錄請(qǐng)求在從客戶端接收以后

3、被即時(shí)處理了。信 用卡驗(yàn)證是另一個(gè)同步處理的例子;只有效勞器證實(shí)輸 入的信用卡號(hào)是有效的, 同時(shí)客戶在帳戶上有足夠的存款,客戶才被允許 繼續(xù)操作。但是讓我們思考一下 在順序處理系統(tǒng)上的支付結(jié)算步驟。 一旦 系統(tǒng)證實(shí)該用戶信用卡的信息是準(zhǔn)確的, 并且在帳戶上有足夠的資金,就 不必等到所有的支付細(xì)節(jié)落實(shí)、轉(zhuǎn)賬完成。支付 結(jié)算可以異步方式進(jìn)行, 這樣客戶可以繼續(xù)進(jìn)行核查操作。需要比典型同步請(qǐng)求消耗更長(zhǎng)時(shí)間的請(qǐng)求,可以使用異步處理。另一 個(gè)異 步處理的例子是,在本地貸款處理程序中,提交至自動(dòng)承銷系統(tǒng) AUS 的信用 請(qǐng)求處理過(guò)程。當(dāng)借方提交貸款申請(qǐng)后,抵押公司會(huì)向AUS 發(fā)送請(qǐng)求,以獲取信用歷史記錄。

4、由于這個(gè)請(qǐng)求要求得到全面而又詳細(xì)的信用報(bào) 告,包 括借方現(xiàn)今和過(guò)去的帳戶,最近的付款和其他財(cái)務(wù)資料,效勞器需 要消耗較長(zhǎng)的 時(shí)間 幾小時(shí)或著有時(shí)甚至是幾天 來(lái)對(duì)這些請(qǐng)求作出響應(yīng)。 客戶端程序 應(yīng) 用要與效勞器連接并消耗如此長(zhǎng)的時(shí)間來(lái)等待結(jié)果,這是 毫無(wú)意義的。因此通 信應(yīng)該是異步發(fā)生的;也就是,一旦請(qǐng)求被提交,它 就被放置在隊(duì)列中,同時(shí)客 戶端與效勞器斷開(kāi)連接。然后AUS 效勞從指定 的隊(duì)列中選出請(qǐng)求進(jìn)行處理, 并將處理得到的消息放置在另一個(gè)消息隊(duì)列 里。最后,客戶端程序從這個(gè)隊(duì)列中選出處理結(jié)果,緊接著處理這個(gè)信用 歷史數(shù)據(jù)。JMS如果您使用過(guò) JMS 代碼,您會(huì)發(fā)現(xiàn)它與 JDBC 或 JCA

5、 彳艮像。它所包含 的 樣本代碼創(chuàng)立或 JMS 資源對(duì)象回溯, 使得每一次您需要寫(xiě)一個(gè)新類來(lái)發(fā) 送和接收 消息時(shí),都具有更好的代碼密集性和重復(fù)性。以下序列顯示了傳 統(tǒng) JMS 實(shí)現(xiàn)所包 括的步驟:創(chuàng)立 JNDI 初始上下文 context 。從 JNDI 上下文獲取一個(gè)隊(duì)列連接工廠。 從隊(duì)列連接工廠中獲取一個(gè)Quene 。創(chuàng)立一個(gè) Session 對(duì)象。創(chuàng)立一個(gè)發(fā)送者 sender 或接收者 receiver 對(duì)象。使用步驟 5 創(chuàng)立的發(fā)送者或接收者對(duì)象發(fā)送或接收消息。 處理完消息后,關(guān)閉所有 JMS 資源。您可以看到,步驟 6 是處理消息的唯一地方。其他步驟都只是管理與 實(shí)際 業(yè)務(wù)要求無(wú)關(guān)的

6、 JMS 資源,但是開(kāi)發(fā)人員必須編寫(xiě)并維護(hù)這些額外步 驟的代碼。Spring JMS Spring框架提供了一個(gè)模板機(jī)制來(lái)隱藏 Java APIs的細(xì)節(jié)。JEE 開(kāi)發(fā)人員可以使用 JDBCTemplate 和 JNDITemplate 類來(lái)分別訪問(wèn) 后臺(tái)數(shù)據(jù)庫(kù)和 JEE資源數(shù)據(jù)源,連接池。JMS也不例外。Spring提供JMSTemplate類,因 此開(kāi)發(fā)人員不用為一個(gè) JMS 實(shí)現(xiàn)去編寫(xiě)樣本代碼。接 下來(lái)是在開(kāi)發(fā) JMS 應(yīng)用程 序時(shí) Spring 所具有一些的優(yōu)勢(shì)。提供 JMS 抽象 API ,簡(jiǎn)化了訪問(wèn)目標(biāo) 隊(duì)列或主題和向指定目標(biāo)發(fā)布 消息 時(shí) JMS 的使用。JEE開(kāi)發(fā)人員不需要關(guān)心J

7、MS不同版本例如與JMS 1.1之間 的差異。開(kāi)發(fā)人員不必專門(mén)處理 JMS 異常,因?yàn)?Spring 為所有 JMS 異常提供 了一 個(gè)未經(jīng)檢查的異常,并在 JMS 代碼中重新拋出。一旦您在JMS應(yīng)用程序中開(kāi)始使用Spring,您將會(huì)欣賞到它在處理 異步消 息傳遞上的簡(jiǎn)便。Spring JMS框架提供多種Java類,可以輕松實(shí) 現(xiàn)JMS應(yīng)用。 表1列出了這些類的一局部。表 1.Spring JMS 類類名包功能 JmsException org.springframework.jms 只要發(fā)生一個(gè) JMS 異 常, Spring 框架就會(huì)拋出異常,這個(gè)類是這些所拋出的異常的基抽象類。JmsTe

8、mplate,JmsTemplate102 org.springframework.jms.core這 些是輔助類,用于簡(jiǎn)化 JMS 的使用,處理 JMS 資源( 如連接工廠,目標(biāo)和發(fā) 送 者 /接收者對(duì)象 ) 的創(chuàng)立和釋放。 JmsTemplate102 是 JmsTemplate 的子 類,使用 JMS1.0.2 標(biāo)準(zhǔn) MessageCreator org.springframework.jms.core 這是 JmsTemplate 類使用的回叫接口,它為指定的會(huì)話創(chuàng)立 JMS 消息。 MessageConverter org.springframework.jms.support.co

9、nverter 這個(gè)接 口充當(dāng)一個(gè)抽象,用來(lái)在 Java 對(duì)象與 JMS 消息之間進(jìn)行轉(zhuǎn)換。 DestinationResolver org.springframework.jms.support.destination 這是 JmsTemplate 用來(lái)解析目標(biāo)名的接口。該接口的默認(rèn)實(shí)現(xiàn)是 DynamicDestinationResolver 和 JndiDestinationResolve 在接下來(lái)的局部,我將詳細(xì)解釋表 1 所列的一局部類 (例如JmsTemplate , DestinationResolver 和 MessageConverter) 。JMSTemplate JmsTe

10、mplate 提供了幾種輔助方法, 用來(lái)執(zhí)行一些根本 操作。 要開(kāi)始使用JmsTemplate前,您需要知道JMS供應(yīng)商支持哪個(gè)JMS標(biāo)準(zhǔn),JBoss AS 4.0.2 和 WebLogic 8.1 效勞器支持 JMS 1.0.2 標(biāo)準(zhǔn)。 WebLogic Server 9.0 包 括了對(duì)JMS 1.1標(biāo)準(zhǔn)的支持。JMS 1.1統(tǒng)一了點(diǎn)對(duì) 點(diǎn)(PTP)和發(fā)布/訂閱(Pub/Sub) 域的編程接口。這種改變的結(jié)果就是,開(kāi)發(fā) 人員可以創(chuàng)立一個(gè)事務(wù)會(huì)話,然后在 這同一個(gè)JMS 會(huì)話里,可以從一個(gè)Queue(PTP 中接收消息,同時(shí)發(fā)送另一個(gè)消息到一個(gè) Topic(Pub/Sub) 。JMS 1.1向

11、后兼容JMS 1.0,應(yīng)此根據(jù)JMS 1 .0編寫(xiě)的代碼仍可以適用于 JMS 1.1JmsTemplate 提供多種發(fā)送和接收消息的方法。表 2 列出了這些方法的一局部。表 2.JMS template 方法方法名稱功能send發(fā)送消息至默認(rèn)或指定的目標(biāo)。JmsTemplate包含send 方法,它通過(guò) javax.jms.Destination 或 JNDI 查詢來(lái)指定目標(biāo)。 receive 從默認(rèn) 或指定的目標(biāo)接收消息,但只會(huì)在指定的時(shí)間后傳遞消 息。我們可以通過(guò) receiveTimeout 屬性指定超時(shí)時(shí)間。 convertAndSend 這個(gè)方法委托 MessageConverter

12、 接口實(shí)例處理轉(zhuǎn)換過(guò)程,然后發(fā)送消息至 指定的目標(biāo)。 receiveAndConvert 從默認(rèn)或指定的目標(biāo)接收消息。并將消 息轉(zhuǎn)換為 Java 對(duì)象。目標(biāo)可以通過(guò) JNDI 上下文保存和獲取。當(dāng)配置 Spring 程序上下文 (application context) 時(shí),我們可以用 JndiObjectFactoryBean 類取得對(duì) JMS 的 引用。 DestinationResolver 接口是用來(lái)把目標(biāo)名稱解析成 JMS 目 標(biāo),當(dāng)應(yīng)用程 序存在大量目標(biāo)時(shí),這是非常有用的。DynamicDestinationResolver (DestinationResolver 的默認(rèn)實(shí)現(xiàn) )

13、是用來(lái) 解析 動(dòng)態(tài)目標(biāo)的。MessageConverter 接口定義了將 Java 對(duì)象轉(zhuǎn)換為 JM? 肖息的約定。 通過(guò) 這個(gè)轉(zhuǎn)換器,應(yīng)用程序代碼可以集中于處理事務(wù)對(duì)象,而不用為對(duì)象 如何表示為 JMS 消息這樣的內(nèi)部細(xì)節(jié)所困饒。 SimpleMessageConverter 和 SimpleMessageConverter102 是 MessageConverter 的默認(rèn)實(shí)現(xiàn)??墒褂盟?們 分別將 String 轉(zhuǎn)換為 JMS TextMessage, 字節(jié)數(shù)組 byte 轉(zhuǎn)換為 JMS BytesMessage , Map 轉(zhuǎn)換為 JMS Map Message 和 Serializa

14、ble 對(duì)象轉(zhuǎn)換為 JMS ObjectMessage 。您也可以編寫(xiě)自定義的 MessageConverter 實(shí)例,通 過(guò) XMLS 定框架例如 JAXB Castor , Commo ns Digester , XMLBea ns 或 XStream , 來(lái)實(shí)現(xiàn) XML 文檔至 U TextMessage 對(duì)象的轉(zhuǎn)換。例如程序我將用一個(gè)貸款申請(qǐng)?zhí)幚硐到y(tǒng) 命名為 LoanProc 例如來(lái)演示如何在 JMS 應(yīng)用程序中使用 Spring 。作為貸款申請(qǐng)的一局部, LoanProc 通過(guò)發(fā)送 貸款詳情貸款I(lǐng)D,借方名字,借方的SSN貸款期限和貸款數(shù)額,從AUS系統(tǒng)獲得信 用歷史詳情。為了簡(jiǎn)便起

15、見(jiàn),我們基于兩個(gè)根本參數(shù)來(lái)表 示信用歷史詳情:信用 分?jǐn)?shù)又名 FICO 得分和貸款數(shù)額。讓我們假設(shè)處理 信用檢查請(qǐng)求是按以下業(yè) 務(wù)規(guī)那么進(jìn)行的:如果貸款數(shù)額等于或低于 ,000 ,借方必須至少有一個(gè) 好的信用也 就是, 借方的 FICO 得分在 680 到 699 之間。如果貸款數(shù)額高于 ,000,借方必須至少有 很好的信用,意味著借方 的信 用得分要高于 700。貸款申請(qǐng)使用案例 信用請(qǐng)求處理使用案例包括以下幾個(gè)步驟: 用戶在貸款 申請(qǐng)頁(yè)面輸入貸款詳情并提交貸款申請(qǐng)。 發(fā)送請(qǐng)求至一個(gè)名為 CreditRequestSendQueue 的肖息隊(duì)列。然后程 序發(fā)送貸款詳情到 AUS 系統(tǒng), 獲取

16、信用歷史詳情。AUS 系統(tǒng)從隊(duì)列中挑出貸款詳情,并使用貸款參數(shù)從它的數(shù)據(jù)庫(kù)中獲 取信 用歷史信息。然后 AUS 將找到的借方的信用歷史信息創(chuàng)立一個(gè)新的消息,發(fā)送到一 個(gè)新 的名為 CreditRequestReceiveQueue 的肖息隊(duì)列。最后, LoanProc 從接收隊(duì)列中選出響應(yīng)消息,處理貸款申請(qǐng)來(lái)決定 是否 批準(zhǔn)或否決申請(qǐng)。在這個(gè)例程中,兩個(gè)消息隊(duì)列都配置在同一個(gè) JBoss MQ server 上。 使用 案例用圖 1 的序列圖 SequenceDiagram 表示圖 1. 貸款處理程序的序列圖下面的表 3 顯示了在例程中我所使用的不同技術(shù)和開(kāi)源框架,并按應(yīng) 用邏 輯層排列。表

17、3. 在 JMS 應(yīng)用程序中使用的框架邏輯層技術(shù) / 框架 MVC Spring MVC Service Spring Frameworkversion 2.1JMS API Spring JMS JMS Provider JBoss MQJMS Console Hermes IDE Eclipse 3.1使用 Hermes 設(shè)置 JMS 資源為了異步處理消息,首先我們需要消息隊(duì)列發(fā)送和接收消息。我們可 以用 Jboss 里的配置 XML 文件創(chuàng)立一個(gè)新的消息隊(duì)列,然后使用 JMSS 制 臺(tái)瀏覽隊(duì) 列的詳細(xì)情況。清單1顯示了配置JMS的XML配置代碼片斷這個(gè) 應(yīng)該參加到 jbossmq-des

18、tinations-service.xml 文件,位 于 %JBOSS_HOME%serverlldeploy-hasingletonjm 文件夾下。 清單 I.JBoss MQ Server 上 JMS 隊(duì)列的配置!-Credit Request Send Queue-mbean code=org.jboss.mq.server.jmx.Queuename=jboss.mq.destination : service=Queue,name=CreditRequestSendQueuedepends optional-attribute-name=DestinationManagerjboss

19、.mq :service=DestinationManager/depends/mbean! -Credit Request Receive Queue-mbean code=org.jboss.mq.server.jmx.Queuename=jboss.mq.destination : service=Queue,name=CreditRequestReceiveQueuedepends optional-attribute-name=DestinationManagerjboss.mq :service=DestinationManager/depends/mbean現(xiàn)在,讓我們看看如何使

20、用一個(gè)名為 Hermes 的 JMS 工具來(lái)瀏覽消息 隊(duì)列。 Hermes 是一個(gè) Java Swing 應(yīng)用程序,它可以創(chuàng)立、管理和監(jiān)視 JMS 提供商 例 如 JBossMQ , WebSphereM , QActiveMQ 禾口 Arjuna 效勞器里的 JMS 目標(biāo)。 從它的網(wǎng)站上下載 Hermes 解壓縮 .zip 文件到本地目錄 例 女口, c: dev oolshermes 。一旦安裝完成,雙擊文件 hermes.bat 位于 bin 文件夾下 啟 動(dòng)程序。要在 Hermes 里配置 JBossMC 服艮務(wù)器,請(qǐng)參考 Hermes 網(wǎng)站上的這個(gè)演 示 它有著出色的 step-by

21、-step 可視化指示來(lái)配置 JBoss MQ 當(dāng)配置一 個(gè)新的 JNDI 初始上下文時(shí),請(qǐng)輸入下面的信息。providerURL=jnp : /localhost : 1099 initialContextFactory=erfaces.NamingContextFactory urlPkgPrefixes=erfaces : org.jboss.naming securityCredentials=admin securityPrincipal=admin當(dāng)您創(chuàng)立新的目標(biāo)時(shí),請(qǐng)輸入 queue/CreditRequestSendQueue 和 q

22、ueue/CreditRequestReceiveQueue 。圖 2 顯示了 JMS 控制臺(tái)的主窗口,其 中 有為 JMS 例程創(chuàng)立的新的消息隊(duì)列。圖 2.Hermes 中所有目標(biāo)的截圖下面的圖 3 顯示了在從消息發(fā)送者類發(fā)送消息到 CreditRequestSendQueue 后, Hermes JMS 控制臺(tái)及消息隊(duì)列的截圖。您可 以 看見(jiàn)有5個(gè)消息在隊(duì)列中,控制臺(tái)顯示了消息詳情,例如消息ID,消息 目標(biāo),時(shí)間戳和實(shí)際的消息內(nèi)容。圖 3.Hermes 中所有隊(duì)列的截圖在例程中使用的隊(duì)列名稱和其他JMS和JNDI參數(shù)見(jiàn)表4。表 4.Spring JMS 配置參數(shù) 參數(shù)名稱參數(shù)值 Initi

23、al Context Factory erfaces.NamingContextFactory Provider URL localhost:8080 Initial Context Factory URL Packages erfaces:org.jboss.naming Queue Connection Factory UIL2ConnectionFactory Queue Name queue/CreditRequestSendQueue,queue/CreditRequestReceiveQueue Spring 配置既然我們已經(jīng)有了運(yùn)行例程

24、所需要的 JMS 目標(biāo),現(xiàn)在該了解用 XML Spring 配置文件 (名為 spring-jms.xml) 來(lái)組配 JMS 組件的具體細(xì)節(jié)了。 這 些組件 是根據(jù)In version of Con troller(IOC)設(shè)計(jì)模式里的設(shè)置方式注入 原那么(setter injection principle),用 JMS 對(duì)象實(shí)例類組配的。讓我們?cè)敿?xì)查看這些組件,并為每一個(gè) JMS 組件演示一段 XML 配置代碼。JNDI 上下文是取得 JMS 資源的起始位置,因此首先我們要配置 JNDI 模板。 清單 2 顯示了名為 jndiTemplate 的 Spring bean ,其中列有 JND

25、I 初始上下文所 必需的常用參數(shù)。清單 2.JNDI 上下文模板bean id=jndiTemplateclass=org.springframework.jndi.JndiTemplateproperty name=environmentprops prop key=java.naming.factory.initial erfaces.NamingContextFactory /prop prop key=vider.url localhost /prop prop key=java.naming.factory.url.pkgs org

26、.erfaces : org.jboss.naming /prop/props /property/bean 接著,我們配置隊(duì)列連接工廠。清單 3 顯示了隊(duì)列連接工廠的配置 清單 3.JMS 隊(duì)列連接工廠配置bean id=jmsQueueConnectionFactory class=org.springframework.jndi.JndiObjectFactoryBean property name=jndiTemplateref bean=jndiTemplate/property property name=jndiName value UIL2ConnectionFa

27、ctory/value/property/bean我們定義2個(gè)JMS目標(biāo)來(lái)發(fā)送和接收消息。詳情見(jiàn)清單4和5。清單 4. 發(fā)送隊(duì)列配置bean id=sendDestination class=org.springframework.jndi.JndiObjectFactoryBean property name=jndiTemplate ref bean=jndiTemplate/property property name=jndiName value queue/CreditRequestSendQueue/value /property /beanbean id=receiveDesti

28、nation class=org.springframework.jndi.JndiObjectFactoryBean property name=jndiTemplateref bean=jndiTemplate/property property name=jndiNamevalue queue/CreditReqeustReceiveQueue/value/property/bean然后我們?cè)賮?lái)配置 JmsTemplate 組件。在例程中我們使用JmsTemplate102 。同時(shí)使用 defaultDestination 屬性來(lái)指定 JMS 目標(biāo)。 清單 6.JMS 模板配置 bean

29、 id=jmsTemplate class=org.springframework.jms.core.JmsTemplate102 property name=connectionFactory ref bean=jmsQueueConnectionFactory/ /property property name=defaultDestinationref bean=destination/property property name=receiveTimeoutvalue 30000/value/property/bean最后我們配置發(fā)送者和接收者組件。清單7和8分別是 Sender 和Re

30、ceiver 對(duì)象的配置。清單 7.JMS Sender 配置bean id=jmsSenderclass=springexample.client.JMSSender property name=jmsTemplateref bean=jmsTemplate/property/bean清單 8.JMS Receiver 配置bean id=jmsReceiverclass=springexample.client.JMSReceiverproperty name=jmsTemplateref bean=jmsTemplate/property/bean測(cè)試及監(jiān)視我寫(xiě)了一個(gè)測(cè)試類,命名為 Lo

31、anApplicationControllerTest ,用來(lái) 測(cè)試LoanProc 程序。我們可以使用這個(gè)類來(lái)設(shè)定貸款參數(shù)以及調(diào)用信用請(qǐng) 求效勞類。讓我們看一下不使用 Spring JMS API 而使用傳統(tǒng) JMS 開(kāi)發(fā)途徑的消 息發(fā) 送者實(shí)例。清單 9 顯示了 MessageSenderJMS 類里的 sendMessage 方 法,其 中包含了使用 JMS API 處理消息的所有必需步驟。清單 9?傳統(tǒng) JMS 實(shí)例public void sendMessage()queueName=queue/CreditRequestSendQueue ;System.out.println(Qu

32、eue name is+queueName) ; /*Create JNDI Initial Context*/tryHashtable env=new Hashtable() ; env.put(java.naming.factory.initial,erfaces.NamingContextFactory) ; env.put(vider.url,localhost) ; env.put(java.naming.factory.url.pkgs,erfaces : org.jboss.naming) ;jndiCon

33、text=new InitialContext(env) ; catch(NamingException e)System.out.println(Could not create JNDI API+context : +e.toString() ;/*Get queue connection factory and queue objects from JNDI context.*/ try queueConnectionFactory=(QueueConnectionFactory) jndiContext.lookup(UIL2ConnectionFactory) ; queue=(Qu

34、eue)jndiContext.lookup(queueName) ; catch(NamingExcepti on e)System.out.println(JNDI API lookup failed : + e.toString() ;/*Create connection,session,sender objects.*Send the message. *Cleanup JMS connection.*/tryqueueConnection= queueConnectionFactory.createQueueConnection();queueSession=queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLED ;GE) queueSender=queueSession.createSender(queue) ; message=queueSession.createTextMessage() ;message.setText(This is asample JMS message.) ; S

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論