Java消息服务(第二版,影印版)
Java消息服务(第二版,影印版)
Mark Richards, Richard Monson-Haefel, David A. Chappell
出版时间:2009年12月
页数:305
《Java消息服务》第二版,是对标准API的一个彻底详尽的介绍——它支持消息传递,即网络计算机间的关键数据从软件到软件的交换。你将学习到JMS如何帮助你解决许多架构难题,如整合不同的系统和应用程序,增加可扩展性,消除系统瓶颈,支持并行处理,提升灵活性和敏捷性。
由于更新了JMS 1.1,第二版还说明了厂商无关的规范将有助于你写基于messaging的应用程序,无论是使用IBM的MQ、Progress软件的SonicMQ、ActiveMQ的,还是其他专有的消息服务。
有了《Java消息服务》,你将可以:
· 使用点对点和出版与订阅消息传递模型建立应用程序
· 使用如事务和持久订阅功能,以使应用程序可靠
· 使用消息驱动的beans在Enterprise JavaBeans(EJB)中实现消息传递
· 使用JMS时结合RESTful应用程序和Spring应用程序框架
消息传递是一个强大的范例,可以更容易地使企业应用程序的不同部分分离。《Java消息服务》第二版将迅速教会你如何运用其背后的关键技术。
“这是对基本的Java集成技术的一个深度论述,涵盖了恰当程度的JMS API细节,并考虑周全地把开放源码解决方案并入需要了解的Enterprise Java的话题讨论。”
——Tim Berglund,
August科技集团董事长
Mark Richards,一位实践经验丰富的设计师,也是一位在消息传递、系统集成和面向服务的架构方面有领导地位的专家和作家。
Richard Monson-Haefel,O’Reilly 出版的《Enterprise JavaBeans》和《Java消息服务》第一版的合著者,是企业计算方面的世界级专家。
David A. Chappell,Oracle公司副总裁兼SOA首席技术专家,是
《Java Web Services》和《Java消息服务》第一版(均为O’Reilly出版)的合著者。
  1. Foreword
  2. Preface
  3. 1. Messaging Basics
  4. The Advantages of Messaging
  5. Heterogeneous Integration
  6. Reduce System Bottlenecks
  7. Increase Scalability
  8. Increase End User Productivity
  9. Architecture Flexibility and Agility
  10. Enterprise Messaging
  11. Centralized Architectures
  12. Decentralized Architectures
  13. Hybrid Architectures
  14. Centralized Architecture As a Model
  15. Messaging Models
  16. Point-to-Point
  17. Publish-and-Subscribe
  18. JMS API
  19. Point-to-Point API
  20. Publish-and-Subscribe API
  21. Real-World Scenarios
  22. Service-Oriented Architecture
  23. Event-Driven Architecture
  24. Heterogeneous Platform Integration
  25. Enterprise Application Integration
  26. Business-to-Business
  27. Geographic Dispersion
  28. Information Broadcasting
  29. Building Dynamic Systems
  30. RPC Versus Asynchronous Messaging
  31. Tightly Coupled RPC
  32. Enterprise Messaging
  33. 2. Developing a Simple Example
  34. The Chat Application
  35. Getting Started with the Chat Example
  36. Examining the Source Code
  37. Sessions and Threading
  38. 3. Anatomy of a JMS Message
  39. Headers
  40. Automatically Assigned Headers
  41. Developer-Assigned Headers
  42. Properties
  43. Application-Specific Properties
  44. JMS-Defined Properties
  45. Provider-Specific Properties
  46. Message Types
  47. Message
  48. TextMessage
  49. ObjectMessage
  50. BytesMessage
  51. StreamMessage
  52. MapMessage
  53. Read-Only Messages
  54. Client-Acknowledged Messages
  55. Interoperability and Portability of Messages
  56. 4. Point-to-Point Messaging
  57. Point-to-Point Overview
  58. When to Use Point-to-Point Messaging
  59. The QBorrower and QLender Application
  60. Configuring and Running the Application
  61. The QBorrower Class
  62. The QLender Class
  63. Message Correlation
  64. Dynamic Versus Administered Queues
  65. Load Balancing Using Multiple Receivers
  66. Examining a Queue
  67. 5. Publish-and-Subscribe Messaging
  68. Publish-and-Subscribe Overview
  69. When to Use Publish-and-Subscribe Messaging
  70. The TBorrower and TLender Application
  71. Configuring and Running the Application
  72. The TLender Class
  73. The TBorrower Class
  74. Durable Versus Nondurable Subscribers
  75. Dynamic Versus Administered Subscribers
  76. Unsubscribing Dynamic Durable Subscribers
  77. Temporary Topics
  78. 6. Message Filtering
  79. Message Selectors
  80. Identifiers
  81. Literals
  82. Comparison Operators
  83. Arithmetic Operators
  84. Declaring a Message Selector
  85. Message Selector Examples
  86. Managing Claims in an HMO
  87. Notification of Certain Bids on Inventory
  88. Priority Handling
  89. Stock Trade Order Auditing
  90. Not Delivered Semantics
  91. Design Considerations
  92. 7. Guaranteed Messaging and Transactions
  93. Guaranteed Messaging
  94. Message Autonomy
  95. Store-and-Forward Messaging
  96. Message Acknowledgments and Failure Conditions
  97. Message Acknowledgments
  98. AUTO_ACKNOWLEDGE
  99. DUPS_OK_ACKNOWLEDGE
  100. CLIENT_ACKNOWLEDGE
  101. Message Groups and Acknowledgment
  102. Handling Redelivery of Messages in an Application
  103. Message Groups Example
  104. Message Grouping and Multiple Receivers
  105. Transacted Messages
  106. Creating and Using a JMS Transaction
  107. Transacted Session Example
  108. Distributed Transactions
  109. Lost Connections
  110. The ExceptionListener Example
  111. Dead Message Queues
  112. 8. Java EE and Message-Driven Beans
  113. Java EE Overview
  114. Enterprise JavaBeans
  115. Enterprise JavaBeans 3.0 (EJB3) Overview
  116. Simplified Bean Development
  117. Dependency Injection
  118. Simplified Callback Methods
  119. Programmatic Defaults
  120. Interceptors
  121. Java Persistence API
  122. JMS Resources in Java EE
  123. The JNDI Environment Naming Context (ENC)
  124. Message-Driven Beans
  125. Concurrent Processing and Scalability
  126. Defining Message-Driven Beans
  127. Message-Driven Bean Use Cases
  128. Message Facade
  129. Transformation and Routing
  130. 9. Spring and JMS
  131. Spring Messaging Architecture
  132. JmsTemplate Overview
  133. Send Methods
  134. convertAndSend Methods
  135. receive and receiveSelected Methods
  136. receiveAndConvert Methods
  137. Connection Factories and JMS Destinations
  138. Using JNDI
  139. Using Native Classes
  140. Sending Messages
  141. Using the send Method
  142. Using the convertAndSend Method
  143. Using a Nondefault JMS Destination
  144. Receiving Messages Synchronously
  145. Message-Driven POJOs
  146. The Spring Message Listener Container
  147. MDP Option 1: Using the MessageListener Interface
  148. MDP Option 2: Using the SessionAwareMessageListener Interface
  149. MDP Option 3: Using the MessageListenerAdapter
  150. Message Conversion Limitations
  151. The Spring JMS Namespace
  152. <jms:listener-container> Element Properties
  153. <jms:listener> Element Properties
  154. 10. Deployment Considerations
  155. Performance, Scalability, and Reliability
  156. Determining Message Throughput Requirements
  157. Testing the Real-World Scenario
  158. To Multicast or Not to Multicast
  159. TCP/IP
  160. UDP
  161. IP Multicast
  162. Messaging Over IP Multicast
  163. The Bottom Line
  164. Security
  165. Authentication
  166. Authorization
  167. Secure Communication
  168. Firewalls and HTTP Tunneling
  169. Connecting to the Outside World
  170. Bridging to Other Messaging Systems
  171. 11. Messaging Design Considerations
  172. Internal Versus External Destination
  173. Internal Destination Topology
  174. External Destination Topology
  175. Request/Reply Messaging Design
  176. Messaging Design Anti-Patterns
  177. Single-Purpose Queue
  178. Message Priority Overuse
  179. Message Header Misuse
  180. A. The Java Message Service API
  181. B. Message Headers
  182. C. Message Properties
  183. D. Installing and Configuring ActiveMQ
  184. Index
书名:Java消息服务(第二版,影印版)
国内出版社:东南大学出版社
出版时间:2009年12月
页数:305
书号:978-7-5641-1930-0
原版书出版商:O'Reilly Media
Mark Richards
 
Mark Richards is an accomplished author and conference speaker working as a handson
SOA and enterprise architect in the financial services industry. In addition to
numerous published articles, he is the author of Java Transaction Design Strategies
(C4Media), contributing author of 97 Things Every Software Architect Should Know
(O’Reilly), and contributing author of No Fluff, Just Stuff Anthology Volumes 1 and 2
(Pragmatic Bookshelf). He is a recognized authority on messaging, Service-Oriented
Architecture, and transaction management. Mark is a regular speaker on the NFJS
Software Symposium series and speaks at conferences around the world.
 
 
Richard Monson-Haefel
 
Richard Monson-Haefel是三本畅销书的获奖作者,著有:《Enterprise JavaBeans》(O'Reilly)和《J2EE Web Services》(Addison-Wesley),并合作撰写了《Java Message Service》(O'Reilly)。他是Enterprise Java领域的世界顶级专家与书籍作者之一。他是OpenEJB的首席架构师,OpenEJB是一个用在苹果机的WebObjects平台上的开源EJB容器。在过去几年里,他还是J2EE、CORBA、Java RMI,以及其他分布式计算项目方面的咨询专家。关于他的更多信息,可以在Richard的网站上获得:http://www.monson-haefel.com。

Richard Monson-Haefel是Burton Group的高级分析师,他也是Enterprise JavaBeans领域最资深的专家之一。他曾对EJB 2.1、EJB 3.0以及J2EE 1.4规范的开发鼎力相助,并曾任职于JCP Executive Committee(JCP执行委员会),监管为J2SE和J2EE平台开发的所有JSR(规范)。
Richard是Apache Geronimo Project(一个开源J2EE应用服务器)以及OpenEJB项目(一个开源EJB容器)的创始人。他还是三本畅销书的获奖作者,著有《Enterprise JavaBeans》(O'Reilly出版)和《J2EE Web Services》
(Addison-Wesley出版),并合作撰写了《Java Message Service》(O'Reilly出版)。要了解有关Richard的更多信息,请访问他的网站
http://www.monson-haefel.com。
Richard Monson-Haefel is the author of the first five editions of Enterprise Java
Beans (O’Reilly), the first edition of Java Message Service (O’Reilly), and is one of the
world’s leading experts and book authors on enterprise computing.
 
 
David A. Chappell
 
David A. Chappell是Sonic软件公司的副总裁和主要技术主管。David在为应用开发者建立软件工具和基础设施方面已经有18年的实际工作经验。作为Progress软件公司的获奖JMS Internet商业消息通信系统SonicMQ的工程主管,David审查了市场上第一个JMS商业实现的设计和开发。David在设计和开发基于Internet的中间件和使用多种技术的分布式对象系统(包括DCOM、CORBA和EJB)方面具有跨平台的背景。David的经验还包括客户/服务基础设施、图形用户界面和语言解释器方面的开发工作。David是《Java Message Service》(O'Reilly)和《Professional ebXML Foundations》(Wrox)两本书的作者之一。他的文章曾发表在《Network World》、《XML Journal》、《Java Develpers Journal》和《Web Service Journal》等杂志上。
David A. Chappell is vice president and chief technologist for SOA at Oracle Corporation.
He is well noted for authoring Java Web Services (O’Reilly), Professional ebXML
Foundations (Wrox), and the first edition of Java Message Service (O’Reilly).
 
 
The animal on the cover of Java Message Service, Second Edition, is a passenger pigeon
(Ectopistes migratorius), an extinct species. In the mid-1800s, passenger pigeons were
the most numerous birds in North America. Several flocks, each numbering more than
two billion birds, lived in various habitats east of the Rocky Mountains. Flocks migrated
en masse in search of food, without regard to season, and a good food source could
keep a flock in one place for years at a time. John James Audubon observed that nearly
the entire passenger pigeon population once stayed in Kentucky for several years and
was seen nowhere else during this time.
Whole flocks roosted together in small areas, and the weight of so many birds—often
up to 90 nests in a single tree—resulted in the destruction of forests, as tree limbs and
even entire trees toppled. (The accumulated inches of bird dung on the ground didn’t
help.) Such roosting habits, combined with high infant mortality and the fact that female
passenger pigeons laid a single egg in a flimsy nest, did not bode well for the longterm
survival of the species.
It was humans harvesting passenger pigeons for food, however, that drove them to
extinction. In 1855, a single operation was processing 18,000 birds per day! Not even
Audubon himself was concerned that the pace might have an adverse effect on the birds’
population, but the last passenger pigeon died in the Cincinnati Zoo in 1914.