Asynchronous. A JMS provider can deliver messages to a client as they arrive; a client does not have to request messages in order to receive them. Lower levels of reliability are available for applications that can afford to miss messages or to receive duplicate messages. The JMS specification describes a set of programming interfaces that support distributed, enterprise messaging. An enterprise messaging systems enables independent distributed components or applications to interact through messages. These components, whether on the same system, the same network, or loosely connected through the Internet, use messaging to pass data and coordinate their respective functions. exposing only the JMS APIs is to hide the details from the users that want a higher-level API and also to ensure portability among implementations. As long as the vendor adheres to the JMS specification, a user shouldn&apos;t have to worry too much about how the implementation is constructed. By itself, it provides no functionality: the API or interfaces are separate from the implementation This gives the benefit of describing in detail what the user view should be, while at the same time allowing vendors to implement the details however they want. JMS is not an implementation of a message-oriented middleware. security and management are not the concerns of the JMS spec
A JMS Application is one or more JMS clients that exchange messages asynchronously
JNDI:java naming and directory service administrative tool allows you to bind cf,dest to jndi. Clients lookup the admin objects in the jndi and then establish a logical connection to the same objects through provider 2 types of administrative objects: connection factory, destination administrated objects are placed in a JNDI by admin. a JMS client notes in its documentation the JMS admin objects it requires and how the JNDI names of these objects should be provided to it. Connection factories are created by the server administrator and bound into the Java Naming and Directory Interface (JNDI) tree. A JMS client uses JNDI to look up the ConnectionFactory and then uses the ConnectionFactory to establish a JMS connection.
A JMS Application is one or more JMS clients that exchange messages asynchronously. JMS deals with two kinds of message domains. - Point-to-Point (PTP) are built around the concept of message queues. Publish-Subscribe systems use a “topic” to send and receive messages. Supports messages containing Java objects and XML pages.
JMS Interfaces: connectionfactory: administrative object used by client to create a connection connection: an active connection for JMS provider destination: administrative object that encapsulates the identity of a message destination session: a single-threaded context for sending/receiving message messageproducer: an object created by a session that is used for sending msg to a dest messageconsumer: similar
Java Messaging Service
Java Messaging Service (JMS)
Messaging is a method of communication
between software components or
A messaging system is a peer-to-peer facility.
Messaging enables distributed communication
that is loosely coupled.
Messaging differs from tightly coupled
technologies such as Remote Method
Invocation (RMI )
Messaging also differs from electronic mail
What is JMS?
A specification that describes a common way for
Java programs to create, send, receive and read
distributed enterprise messages
loosely coupled communication
A JMS provider can deliver messages to a client as they arrive;
a client does not have to request messages in order to receive them.
A message is guaranteed to be delivered once and only once.
Outside the specification
A JMS Architecture
Java programs that send/receive messages
the objects that communicate information between JMS
preconfigured JMS objects created by an admin for the
use of clients
ConnectionFactory, Destination (queue or topic)
messaging system that implements JMS and
• The administrator binds connection factories (CF)
and destinations (D) into a JNDI namespace.
• A JMS client can then lookup the administered
objects and establish a logical connection to them
via the JMS Provider
When multiple applications need
to receive the same messages,
Publish- Subscribe Messaging
The central concept in a
system is the Topic.
In Publish-Subscribe Messaging
is that, there may be multiple
Senders and multiple Receivers.
Point- To-Point Messaging
When one process needs to send a
message to another process,
Point-To-Point Messaging can be
There are two basic types:
• The first one involves a client
that directly sends a message to
• The second and more common
implementation is based on the
concept of a Message Queue.
in Point-to-Point messaging even
though there may be multiple
Senders of messages, but there is
only a single Receiver.
When an application sends a message and
expects to receive a message in return,
Request-Reply Messaging can be used.
It could be:
JMS does not explicitly support Request-
Reply Messaging, though it allows it in the
context of the other methods.
JMS API Programming Model
used for identifying and routing messages
contains vendor-specified values, but could also contain
typically name/value pairs
Message Properties (optional)
contains the data
five different message body types in the JMS
specification :-Bytes Messages ,Map Messages, Object Messages,
Stream Messages , Text Messages
JMS Message Types
Message Type Contains Some Methods
TextMessage String getText,setText
MapMessage set of name/value pairs setString,setDouble,setLo
BytesMessage stream of uninterpreted
StreamMessage stream of primitive
ObjectMessage serialize object setObject,getObject
Development in JMS
JMS API was first introduced in 1998
JMS provider may implement message-driven
beans to process messages concurrently.
Message sends and receives can participate in
Java Transaction API (JTA)
The JMS API allows for a very loosely coupled
interaction between J2EE applications and
existing Enterprise Information system (EIS).
Allaire Corporation - JRun Server
BEA Systems, Inc.
Brokat Technologies (formerly GemStone)
iPlanet (formerly Sun Microsystems, Inc. Java Message Queue)
SilverStream Software, Inc.
SpiritSoft, Inc. (formerly Push Technologies Ltd.)
TIBCO Software, Inc.