JMS API包括以下內容:
l 什么是消息?
l 什么是JMS API?
l 什么時候應用JMS API?
l JMS API怎樣同J2EE工作?
消息是軟件組件或應用之間的一種通信方法。消息系統是一種對等(peer-to-peer)的系統:消息客戶可以向其他客戶發送消息,也可以接收來自其他客戶的消息。每一個客戶和一個消息代理相連,由消息代理提供創建、發送、接收、讀取消息的服務。
消息實現了松散耦合的分布式通信。組件發送消息到目的,消息接收者從該目的提取消息。但是,消息的發送和接收卻不是同時進行的。實際上,發送者不必去了解接收者,同樣接收者也不必了解發送者;它們只需要知道消息格式和消息目的。因此,消息不同于像遠程方法調用(RMI)這種緊密耦合的通信方法,RMI要求知道遠程應用的方法。
消息也不同于電子郵件(e-Mail),電子郵件是人與人或應用程序與人之間的通信方法。消息只應用于應用程序和組件之間的通信。
java消息服務是一組Java應用程序接口(Java API),它提供創建、發送、接收、讀取消息的服務。由Sun公司和它的合作伙伴設計的JMS API定義了一組公共的應用程序接口和相應語法,使得Java程序能夠和其他消息組件進行通信。
JMS API最大限度的減少了程序員學習使用消息產品的概念,但是卻提供了足夠功能支持復雜的消息應用。通過JMS提供者內相同的消息域,它最大限度的加大了消息應用的可移植性。
JMS API不僅使通信變得松散耦合,而且它還使通信變得:
l 異步:JMS提供者將到來的消息發送給客戶,客戶不用發送請求接收消息。
l 可靠:JMS API確保消息傳送一次而且只傳送一次??煽啃圆畹膽贸绦蚩赡軙G失消息或者重復接收消息。
JMS規范于1998年8月第一次發布。最新的版本是1.0.2b,于2001年8月發布。可以從http://java.sun.com/PRodUCts/jms/docs.Html下載最新的規范。
企業級的應用供給商在以下情況下可能會選擇緊密耦合的消息API(例如:RPC):
l 供給商希望組件不依靠其他組件的接口信息,這樣,組件變得輕易替換。
l 供給商希望在不論所有的組件是否都同時正常運行情況下,也能運行應用。
l 應用的商業邏輯要求組件發送信息給其他組件,并且在沒有及時回復的情況也能進行操作。
例如,一個汽車制造商的企業應用組件可以在以下情況下使用JMS API:
l 當庫存水平低于正常水平時,庫存組件將消息發送給制造組件。
l 制造組件發送消息給零件組件,使得它可以收集它所需的零件。
l 零件組件接下來將消息發送給庫存組件和訂購組件,要求更新庫存,從供給部訂購新零件。
l 制造和零件組件都能發送信息給會計組件,要求更新它們的預算。
l 商務部發送產品目錄給銷售部。
使用消息完成以上任務,答應不同組件之間高效聯系,用不著安排上級部門治理控制和使用其他資源。
圖1.1顯示了這個簡單的例子如何工作。
圖1.1企業應用中的消息
制造業只是企業如何應用JMS API的一個例子。像零售業、金融服務業、公共醫療衛生服務等其他行業也能使用消息應用。
當1998年,JMS API第一次發布時,它的最重要的目標是使Java應用程序能夠訪問現有的面向消息的中間件,如IBM的 MQSeries。
從那時起,許多廠家開始選擇實現JMS API,因此,JMS產品才能夠為企業提供更完整的消息性能。
在J2EE1.2,基于J2EE的服務供給商被要求支持JMS API,但不要求完全實現它。 現在,在J2EE1.3中,JMS API是平臺的一部分。應用程序開發者可以使用J2EE 組件的消息功能。
J2EE 1.3中的JMS API具有以下特征:
l 應用客戶端。EJB組件、Web組件可以發送或同步接收JMS消息。應用客戶端也可以異步接收JMS消息。(Applets不要求支持JMS API)
l 新引入的EJB――消息bean,能夠異步處理消息。JMS提供者( JMS provider)可以使用消息bean,實現消息的并發處理。
l 可以在分布式事務中發送、接收消息。
JMS API的引入,簡化了商業邏輯的開發,答應松散耦合、可靠的、異步通信的的J2EE組件和老式的消息系統之間進行通信,極大地增強了J2EE平臺的功能。開發者很輕易地將新的特性加入現存的基于J2EE的應用當中
J2EE平臺的EJB容器,支持分布式事務并且能夠處理并發的消息,極大增強了JMS API的功能。
J2EE1.3另一種新引入的技術――J2EE連接器,將J2EE應用和現存的企業信息系統(EIS,Enterprise Information System)高度集合起來。而JMS API則相反,它使得J2EE應用和現存的企業信息系統變得松散、耦合。
新聞熱點
疑難解答