2. Using the Tutorial Examples 3. Getting Started with Web Applications 5. JavaServer Pages Technology 7. JavaServer Pages Standard Tag Library 10. JavaServer Faces Technology 11. Using JavaServer Faces Technology in JSP Pages 12. Developing with JavaServer Faces Technology 13. Creating Custom UI Components 14. Configuring JavaServer Faces Applications 15. Internationalizing and Localizing Web Applications 16. Building Web Services with JAX-WS 17. Binding between XML Schema and Java Classes 19. SOAP with Attachments API for Java 21. Getting Started with Enterprise Beans 23. A Message-Driven Bean Example 24. Introduction to the Java Persistence API 25. Persistence in the Web Tier 26. Persistence in the EJB Tier 27. The Java Persistence Query Language 28. Introduction to Security in the Java EE Platform 29. Securing Java EE Applications 31. The Java Message Service API How Does the JMS API Work with the Java EE Platform? Point-to-Point Messaging Domain Publish/Subscribe Messaging Domain Writing Simple JMS Client Applications A Simple Example of Synchronous Message Receives Writing the Client Programs for the Synchronous Receive Example Creating JMS Administered Objects for the Synchronous Receive Example Compiling and Packaging the Clients for the Synchronous Receive Example Running the Clients for the Synchronous Receive Example A Simple Example of Asynchronous Message Consumption Writing the Client Programs for the Asynchronous Receive Example Compiling and Packaging theAsynchConsumer Client Running the Clients for the Asynchronous Receive Example A Simple Example of Browsing Messages in a Queue Writing the Client Program for the Queue Browser Example Compiling and Packaging theMessageBrowser Client Running the Clients for the Queue Browser Example Running JMS Client Programs on Multiple Systems Creating Administered Objects for Multiple Systems Editing, Recompiling, Repackaging, and Running the Programs Deleting the Connection Factory and Stopping the Server Creating Robust JMS Applications Using Basic Reliability Mechanisms Controlling Message Acknowledgment Specifying Message Persistence Setting Message Priority Levels Creating Temporary Destinations Using Advanced Reliability Mechanisms Creating Durable Subscriptions Using JMS API Local Transactions Using the JMS API in a Java EE Application Using@Resource Annotations in Java EE Components Using Session Beans to Produce and to Synchronously Receive Messages Using Message-Driven Beans to Receive Messages Asynchronously Managing Distributed Transactions Using the JMS API with Application Clients and Web Components 32. Java EE Examples Using the JMS API 36. The Coffee Break Application | Basic JMS API ConceptsThis section introduces the most basic JMS API concepts, the ones you mustknow to get started writing simple JMS client applications: The next section introduces the JMS API programming model. Later sections cover moreadvanced concepts, including the ones you need to write Java EE applications thatuse message-driven beans. JMS API ArchitectureA JMS application is composed of the following parts.
Figure 31-2 illustrates the way these parts interact. Administrative tools allow you to binddestinations and connection factories into a JNDI namespace. A JMS client can thenuse resource injection to access the administered objects in the namespace and then establisha logical connection to the same objects through the JMS provider. Figure 31-2 JMS API Architecture ![]() Messaging DomainsBefore the JMS API existed, most messaging products supported either thepoint-to-point orthepublish/subscribe approach to messaging. The JMS specification provides a separate domain foreach approach and defines compliance for each domain. A stand-alone JMS provider canimplement one or both domains. A Java EE provider must implement both domains. In fact, most implementations of the JMS API support both the point-to-point andthe publish/subscribe domains, and some JMS clients combine the use of both domainsin a single application. In this way, the JMS API has extended thepower and flexibility of messaging products. The JMS 1.1 specification goes one step further: It provides common interfaces thatenable you to use the JMS API in a way that isnot specific to either domain. The following subsections describe the two messaging domains andthen describe the use of the common interfaces. Point-to-Point Messaging DomainA point-to-point (PTP) product or application is built on the concept of messagequeues, senders, and receivers. Each message is addressed to a specific queue, andreceiving clients extract messages from the queues established to hold their messages. Queuesretain all messages sent to them until the messages are consumed or untilthe messages expire. PTP messaging has the following characteristics and is illustrated inFigure 31-3. Figure 31-3 Point-to-Point Messaging ![]()
Use PTP messaging when every message you send must be processed successfully byone consumer. Publish/Subscribe Messaging DomainIn a publish/subscribe (pub/sub) product or application, clients address messages to atopic,which functions somewhat like a bulletin board. Publishers and subscribers are generally anonymousand can dynamically publish or subscribe to the content hierarchy. The system takes careof distributing the messages arriving from a topic’s multiple publishers to its multiplesubscribers. Topics retain messages only as long as it takes to distribute themto current subscribers. Pub/sub messaging has the following characteristics.
The JMS API relaxes this timing dependency to some extent by allowing subscribersto createdurable subscriptions, which receive messages sent while the subscribers are not active.Durable subscriptions provide the flexibility and reliability of queues but still allow clients tosend messages to many recipients. For more information about durable subscriptions, seeCreating Durable Subscriptions. Use pub/sub messaging when each message can be processed by zero, one, ormany consumers.Figure 31-4 illustrates pub/sub messaging. Figure 31-4 Publish/Subscribe Messaging ![]() Programming with the Common InterfacesVersion 1.1 of the JMS API allows you to use the samecode to send and receive messages under either the PTP or the pub/subdomain. The destinations that you use remain domain-specific, and the behavior of theapplication will depend in part on whether you are using a queue ora topic. However, the code itself can be common to both domains, makingyour applications flexible and reusable. This tutorial describes and illustrates these common interfaces. Message ConsumptionMessaging products are inherently asynchronous: There is no fundamental timing dependency between theproduction and the consumption of a message. However, the JMS specification uses thisterm in a more precise sense. Messages can be consumed in either oftwo ways:
Copyright © 2010, Oracle and/or its affiliates. All rights reserved.Legal Notices |