熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

對於Java消息服務中常見問題的解答

2013-11-15 11:49:25  來源: JSP教程 

  問 什麼是 Java 消息服務?
  
  答: Java 消息服務(Java Message ServiceJMS) API 是一個用於訪問企業消息傳遞系統的 API是 Java Platform Enterprise(JEE)的一部分
  
  Java 消息服務使得編寫那些需要異步發送及接收重要業務數據和事件的業務應用變得容易Java 消息服務定義了一個公共的企業消息傳遞 API該 API 設計來被大范圍的企業消息傳遞產品容易而有效地支持Java 消息服務不僅支持消息隊列還支持消息傳遞的發布/訂閱模式
  
  問 Java 消息服務是另一種郵件 API 嗎?
  
  答: 不是術語消息傳遞在計算機領域的定義很廣它被用來描述不同的操作系統概念用於描述電子郵件和傳真系統如果使用了 JMS API它被用來描述企業應用之間的異步通信
  
  JMS 消息是指由企業應用(而不是人)消費的異步請求報告或事件它們包含了協同這些系統所需的重要信息包含了描述特定業務活動的精確格式化的數據通過這些消息的交換每個應用可以跟蹤企業的進展
  
  問 Java 消息服務是一種產品嗎?
  
  答: 不是Java 消息服務是一個用於企業消息傳遞的公共 API 的規范使用它需要一個由企業消息傳遞供應商提供的 JMS 提供者
  
  問 可從哪裡獲得 Java 消息服務規范?
  
  答: Java 消息服務 規范可從 處獲得在線的 JMS API 文檔也可在這個鏈接地址中找到
  
  問 Java 消息服務有何引人注目的?
  
  答: Java 消息服務引人注目的原因是它是第一個得到廣泛行業支持的企業消息傳遞 API通過提供適應廣泛企業消息傳遞系統的標准消息傳遞概念和約定它簡化了企業應用的開發它利用現有的經過企業驗證的消息傳遞系統
  
  問 開發人員為何應該使用 Java 消息服務?
  
  答: 因為 Java 消息服務能使下面的工作變得簡單編寫可移植的基於消息的業務應用通過加入新的能夠與現有非 JMS 客戶端完全協作的 JMS 客戶端以擴展現有的基於消息的應用
  
  問 為了學習使用 Java 消息服務程序員需要具備什麼?
  
  答: 基於消息的應用和基於遠程過程調用的應用是根本不同的一旦開發人員理解了如何最好地使用這兩個技術 JMS API 就使得編寫基於消息的應用跟學習幾個附加接口一樣容易
  
  問 Java 消息服務和企業 JavaBeans 組件有何關系?
  
  答: 自從 JEE 版本發布以來企業 JavaBeans 組件已經能夠使用 JMS API 來同步地發送和接收企業消息JEE 版本現在已可獲得它提供了一種新的允許企業應用異步地接收消息的企業 Bean即消息驅動 Bean
  
  問 Java 消息服務 API 與 Java 命名和目錄接口(JNDI) API 之間有何關系?
  
  答: 跟其他 Java 企業 API 一樣JMS API 使用 JNDI API 來進行管理JMS API 將 ConnectionFactories 和 Destinations 定義為被管理對象它們被配置並放入到 JNDI 命名的上下文中然後 JMS 客戶端查找和使用這些預先配置好的對象這樣保證了 JMS 應用易於部署和管理
  
  問 Java 消息服務 API 與 Java 數據庫連接(JDBC)API 之間有何關系?
  
  答: JMS 客戶端或許也使用 JDBC API在同一個事務中它們可能既使用 JMS API 也使用 JDBC API大多數情況下通過把這些客戶端實現為企業 BeanJMS 客戶端可自動完成JMS 客戶端可能也使用 Java 事務 API
  
  問 Java 消息服務與 Java 事務 API 及 Java 事務服務之間有何關系?
  
  答: Java 事務 API (Java Transaction APIJTA) 提供了一個用於劃分分布式事務的客戶端 API以及一個用於訪問資源以能夠參與分布式事務的 APIJMS 客戶端可能使用 JTA 來劃分分布式事務JMS 提供者通過 JTA 可以自如地支持分布式事務
  
  Java 事務服務 (Java Transaction ServiceJTS) 能和JMS API一道用來形成分布式的事務該事務結合了消息收發與數據庫更新以及其他 JTS 能識別的服務當 JMS 客戶端在應用服務器(比如 JEE 服務器)中運行時這些服務應該被自動處理可是 也有可能需要 JMS 客戶端去明確編寫它們
  
  問 在哪裡可以找到 JMS API 討論組?
  
  在 處可找到一個 JMS API 論壇要加入這個論壇您必須是 Java Developer Connection 的成員
  
  問 為什麼 JMS API 發展成為一種在企業內部組件間提供通信的技術而不是用於在企業間通過 Internet 進行企業-企業(BB)的通信?
  
  答: 提供基於 Internet 的 JMS API 消息傳遞的主要問題是JMS API 供應商們必須使用一種共同的通信格式並且 JMS 規范必須指定一個路由器-路由器 API
  
  BB 消息傳遞是一個重要的領域有它自己獨特的要求該領域正被一些不斷湧現的標准所占據比如電子商務 XML計劃即 ebXML (參見 )SUN 公司在這一方面起到了積極的作用現在ebXML 計劃定義了一個消息傳遞服務它支持通過Internet 的 XML 消息傳遞
  
  當前的 ebXML 規范著重於通過使用多種傳輸協議比如 HTTPmail 和 FTP通過 Internet 提供終端間的點到點異步通信ebXML 還計劃提供發布/訂閱式的 XML 消息傳遞Sun 公司和它的合作伙伴正在定義一個新的 Java API for Messaging即 JAXM (參見 JSR # Java APIs for XML Messaging ) 它支持 ebXML 消息服務規范早先版本的 JAXM 可以從 Java Developer Connection 的 The M Project Early Access 處得到
  
  總之 JMS API 是特意設計為在企業內部使用的而獨立企業之間通過 Internet 進行的 XML 消息傳遞將得到 ebXML 計劃和新的支持不同 ebXML 規范的 Java API(包括 JAXM)的支持
  
  技術問題
  
  問 JMS API 需要哪一種 JDK 版本?
  
  答: JMS API 需要 JDK/JRE x 或者更高的版本
  
  問 JMS API 是否提供了一個分布式 Java 事件模型的版本?
  
  答: 一般來講JMS API 可以被用作通知服務但是它沒有定義 Java 事件的分布式版本一個實現分布式 Java 事件的可選方案是作為 JavaBeans 組件該組件通過 JMS API 透明地向事件產生 Bean 和事件監聽 Bean 分布事件
  
  問 為什麼有兩個各自分開的 JMS API 域即點到點和發布/訂閱而不合為一個域呢?
  
  答: 即使有許多類似之處提供獨立的域仍然很重要這意味著廠商不必被強迫支持不屬於他們的域內的設備客戶端代碼也更加輕便靈活因為產品更充分地支持一個域(相對於支持一個合並域中較少定義的子集而言)
  
  問 為什麼 JMS API 不指定一套 JavaBeans 組件?
  
  答: JMS API 是一個低級的 API 就像其他低級的 Java API 一樣 它無助於直接表現為 JavaBeans 組件
  
  問 JMS API 如何與 CORBA 通知服務相結合?
  
  答: 通知服務為 CORBA 事件服務增加了過濾功能傳輸保證語義持久性連接和事件網絡的集結它從 CORBA 消息服務(該服務定義了異步 CORBA 方法調用)獲得傳輸保證語義
  
  Java 技術與 CORBA 很好的結合在一起它提供了 Java IDL 和 COS Naming 技術另外OMG 最近定義了 RMI over IIOP
  
  預計大多數 Java 對 IIOP 的使用將通過 RMI預計大多數 Java 對 COS Naming 的使用將通過 JNDI API(Java 命名和目錄服務)JMS API 是 Java 特定的 API它設計位於大范圍現有和未來的面向消息中間件(Message Oriented MiddlewareMOM)系統的上層(正如 JNDI API位於現有命名和目錄服務的上層一樣)
  
  問 為什麼 JMS API 不提供端到端的同步消息傳輸和傳輸通知?
  
  答: 作為一個實現可靠應用的機制一些消息傳遞系統提供到目的地的同步傳輸一些系統為客戶端提供了不同形式的傳輸通知這樣客戶端就能檢測出被刪除或忽略的消息這不是由 JMS API 定義的模型
  
  JMS API 消息傳遞通過一次並且只有一次的 PERSISTENT 消息傳輸語義來提供有保障的傳輸另外消息消費者可以通過使用 CLIENT_ACKNOWLEDGE 模式或事務會話來確保可靠的消息處理這樣使用最小的同步實現了可靠的傳輸這是大多數廠商和開發者都喜歡的企業消息傳遞模型
  
  JMS API 沒有定義系統消息(如傳輸通知)的模式如果應用需要消息收到的確認回復可以定義一個應用級的確認消息
  
  這些問題放到發布/訂閱應用的上下文中考察將能更清楚地理解在這個上下文中同步傳輸和/或系統接收確認對於實現可靠的應用並不是一個有效的機制(因為按照定義生產者不會也不想負責端到端的消息傳輸)
  
  問 為什麼 JMS API 不提供群體發送(sendtolist)機制?
  
  答: 當前JMS API 提供大量的消息傳送選擇但是消息在同一時刻只能發送到一個目的地
  
  群體發送的好處是程序員只需做很少的工作並且還有 JMS 提供者對發送同樣的消息到多個目的地的情況進行優化的潛力
  
  群體發送機制不利的方面是目的列表在效果上是由客戶端實現並維護的集合這將增加 JMS 客戶端管理的復雜度
  
  不使用提供群體發送機制的 JMS API而推薦提供者支持配置代表一個群體的目的這允許客戶端通過一次發送便可以到達所有的消費者同時保證群體被正確地管理
  
  問 為什麼 JMS API 不提供訂閱通知?如果發布者
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19688.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.