What is included with this book?
Mark Richards, Director and Sr. Technical Architect at Collaborative Consulting, LLC, is a leading authority on messaging, transaction management, systems integration, and Service Oriented Architecture. He is the author of "Java Transaction Design Strategies", contributing author of "97 Things Every Software Architect Should Know", "NFJS Anthology Volume 1", "NFJS Anthology Volume 2", and the author of numerous transaction, JMS, and SOA-related articles. Mark is a regular conference speaker on the No Fluff Just Stuff conference tour and has spoken at other conferences around the world, including QCon, TSSJS, and SYS-CON.
Richard Monson-Haefel is the author of Enterprise JavaBeans (Editions 1 - 5), Java Message Service and one of the world's leading experts and book authors on enterprise computing. He was the lead architect of OpenEJB, an open source EJB container used in Apache Geronimo, a member of the JCP Executive Committee, member of JCP EJB expert groups, and an industry analyst for Burton Group researching enterprise computing, open source, and Rich Internet Application (RIA) development. Today, Richard is the VP of Developer Relations for Curl, Inc. a RIA platform used in enterprise computing. You can learn more about Richard at his web site Monson-Haefel.
David A. Chappell is vice president and chief technologist for SOA at Oracle Corporation. Chappell has over 20 years of experience in the software industry covering a broad range of roles including Architecture, code-slinging, sales, support and marketing. He is well known worldwide for his writings and public lectures on the subjects of Service Oriented Architecture (SOA), the enterprise service bus (ESB), message oriented middleware (MOM), enterprise integration, and is a co-author of many advanced Web Services standards.
As author of the O'Reilly Enterprise Service Bus book, Dave has had tremendous impact on redefining the shape and definition of SOA infrastructure. He has extensive experience in distributed computing infrastructure, including ESB, SOA Governance, EJB and Web application server infrastructure, JMS and MOM, EAI, CORBA, and COM. Chappell's experience also includes development of client/server infrastructure, graphical user interfaces and language interpreters.
Chappell is also well noted for authoring Java Web Services (O'Reilly), Professional ebXML Foundations (Wrox) and Java Message Service (O'Reilly). In addition, he has written numerous articles in leading industry publications, such as Business Integration Journal, Enterprise Architect, Java Developers Journal, JavaPro, Web Services Journal, XML Journal and Network World.
Chappell and his works have received many industry awards including the "Java™ Technology Achievement Award" from JavaPro magazine for "Outstanding Individual Contribution to the Java Community" in 2002, and the 2005 CRN Magazine "Top 10 IT leaders" award for "casting larger-than-life shadow over the industry".
Foreword | p. xi |
Preface | p. xiii |
Messaging Basics | p. 1 |
The Advantages of Messaging | p. 3 |
Heterogeneous Integration | p. 3 |
Reduce System Bottlenecks | p. 3 |
Increase Scalability | p. 4 |
Increase End User Productivity | p. 4 |
Architecture Flexibility and Agility | p. 5 |
Enterprise Messaging | p. 5 |
Centralized Architectures | p. 7 |
Decentralized Architectures | p. 7 |
Hybrid Architectures | p. 8 |
Centralized Architecture As a Model | p. 8 |
Messaging Models | p. 9 |
Point-to-Point | p. 10 |
Publish-and-Subscribe | p. 10 |
JMS API | p. 11 |
Point-to-Point API | p. 13 |
Publish-and-Subscribe API | p. 14 |
Real-World Scenarios | p. 14 |
Service-Oriented Architecture | p. 15 |
Event-Driven Architecture | p. 16 |
Heterogeneous Platform Integration | p. 16 |
Enterprise Application Integration | p. 17 |
Business-to-Business | p. 17 |
Geographic Dispersion | p. 18 |
Information Broadcasting | p. 18 |
Building Dynamic Systems | p. 18 |
RPC Versus Asynchronous Messaging | p. 21 |
Tightly Coupled RPC | p. 21 |
Enterprise Messaging | p. 23 |
Developing a Simple Example | p. 25 |
The Chat Application | p. 25 |
Getting Started with the Chat Example | p. 28 |
Examining the Source Code | p. 30 |
Sessions and Threading | p. 39 |
Anatomy of a JMS Message | p. 41 |
Headers | p. 42 |
Automatically Assigned Headers | p. 43 |
Developer-Assigned Headers | p. 46 |
Properties | p. 47 |
Application-Specific Properties | p. 47 |
JMS-Defined Properties | p. 49 |
Provider-Specific Properties | p. 50 |
Message Types | p. 50 |
Message | p. 50 |
TextMessage | p. 51 |
ObjectMessage | p. 52 |
BytesMessage | p. 53 |
StreamMessage | p. 56 |
MapMessage | p. 58 |
Read-Only Messages | p. 60 |
Client-Acknowledged Messages | p. 61 |
Interoperability and Portability of Messages | p. 61 |
Point-to-Point Messaging | p. 63 |
Point-to-Point Overview | p. 63 |
When to Use Point-to-Point Messaging | p. 66 |
The QBorrower and QLender Application | p. 67 |
Configuring and Running the Application | p. 67 |
The QBorrower Class | p. 69 |
The QLender Class | p. 76 |
Message Correlation | p. 81 |
Dynamic Versus Administered Queues | p. 83 |
Load Balancing Using Multiple Receivers | p. 84 |
Examining a Queue | p. 85 |
Publish-and-Subscribe Messaging | p. 87 |
Publish-and-Subscribe Overview | p. 87 |
When to Use Publish-and-Subscribe Messaging | p. 89 |
The TBorrower and TLender Application | p. 90 |
Configuring and Running the Application | p. 90 |
The TLender Class | p. 92 |
The TBorrower Class | p. 96 |
Durable Versus Nondurable Subscribers | p. 100 |
Dynamic Versus Administered Subscribers | p. 101 |
Unsubscribing Dynamic Durable Subscribers | p. 104 |
Temporary Topics | p. 104 |
Message Filtering | p. 107 |
Message Selectors | p. 109 |
Identifiers | p. 110 |
Literals | p. 111 |
Comparison Operators | p. 111 |
Arithmetic Operators | p. 113 |
Declaring a Message Selector | p. 114 |
Message Selector Examples | p. 116 |
Managing Claims in an HMO | p. 116 |
Notification of Certain Bids on Inventory | p. 116 |
Priority Handling | p. 116 |
Stock Trade Order Auditing | p. 117 |
Not Delivered Semantics | p. 117 |
Design Considerations | p. 118 |
Guaranteed Messaging and Transactions | p. 125 |
Guaranteed Messaging | p. 125 |
Message Autonomy | p. 126 |
Store-and-Forward Messaging | p. 126 |
Message Acknowledgments and Failure Conditions | p. 126 |
Message Acknowledgments | p. 127 |
AUTO_ACKNOWLEDGE | p. 127 |
DUPS_OK_ACKNOWLEDGE | p. 132 |
CLIENT_ACKNOWLEDGE | p. 132 |
Message Groups and Acknowledgment | p. 133 |
Handling Redelivery of Messages in an Application | p. 134 |
Message Groups Example | p. 134 |
Message Grouping and Multiple Receivers | p. 143 |
Transacted Messages | p. 145 |
Creating and Using a JMS Transaction | p. 147 |
Transacted Session Example | p. 147 |
Distributed Transactions | p. 150 |
Lost Connections | p. 151 |
The ExceptionListener Example | p. 152 |
Dead Message Queues | p. 153 |
Java EE and Message-Driven Beans | p. 155 |
Java EE Overview | p. 155 |
Enterprise JavaBeans | p. 156 |
Enterprise JavaBeans 3.0 (EJB3) Overview | p. 157 |
Simplified Bean Development | p. 158 |
Dependency Injection | p. 158 |
Simplified Callback Methods | p. 159 |
Programmatic Defaults | p. 159 |
Interceptors | p. 160 |
Java Persistence API | p. 162 |
JMS Resources in Java EE | p. 162 |
The JNDI Environment Naming Context (ENC) | p. 164 |
Message-Driven Beans | p. 166 |
Concurrent Processing and Scalability | p. 168 |
Defining Message-Driven Beans | p. 168 |
Message-Driven Bean Use Cases | p. 171 |
Message Facade | p. 171 |
Transformation and Routing | p. 173 |
Spring and JMS | p. 177 |
Spring Messaging Architecture | p. 177 |
JmsTemplate Overview | p. 180 |
Send Methods | p. 181 |
convertAndSend Methods | p. 181 |
receive and receiveSelected Methods | p. 182 |
receiveAndConvert Methods | p. 183 |
Connection Factories and JMS Destinations | p. 184 |
Using JNDI | p. 184 |
Using Native Classes | p. 187 |
Sending Messages | p. 189 |
Using the send Method | p. 190 |
Using the convertAndSend Method | p. 191 |
Using a Nondefault JMS Destination | p. 193 |
Receiving Messages Synchronously | p. 195 |
Message-Driven POJOs | p. 198 |
The Spring Message Listener Container | p. 198 |
MDP Option 1: Using the MessageListener Interface | p. 199 |
MDP Option 2: Using the SessionAwareMessageListener Interface | p. 201 |
MDP Option 3: Using the MessageListenerAdapter | p. 202 |
Message Conversion Limitations | p. 207 |
The Spring JMS Namespace | p. 208 |
p. 209 | |
p. 211 | |
Deployment Considerations | p. 213 |
Performance, Scalability, and Reliability | p. 213 |
Determining Message Throughput Requirements | p. 213 |
Testing the Real-World Scenario | p. 214 |
To Multicast or Not to Multicast | p. 217 |
TCP/IP | p. 218 |
UDP | p. 218 |
IP Multicast | p. 218 |
Messaging Over IP Multicast | p. 219 |
The Bottom Line | p. 221 |
Security | p. 222 |
Authentication | p. 222 |
Authorization | p. 223 |
Secure Communication | p. 224 |
Firewalls and HTTP Tunneling | p. 224 |
Connecting to the Outside World | p. 225 |
Bridging to Other Messaging Systems | p. 227 |
Messaging Design Considerations | p. 229 |
Internal Versus External Destination | p. 229 |
Internal Destination Topology | p. 230 |
External Destination Topology | p. 231 |
Request/Reply Messaging Design | p. 232 |
Messaging Design Anti-Patterns | p. 236 |
Single-Purpose Queue | p. 236 |
Message Priority Overuse | p. 240 |
Message Header Misuse | p. 240 |
The Java Message Service API | p. 245 |
Message Headers | p. 265 |
Message Properties | p. 277 |
Installing and Configuring ActiveMQ | p. 285 |
Index | p. 291 |
Table of Contents provided by Ingram. All Rights Reserved. |
The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.