Transcript PowerPoint
G52IWS: XML Messaging
(briefly)
Chris Greenhalgh
2007-11-30
1
Contents
• Introduction to message-based
communication
• SOAP with Attachment API for Java
• Provider-less messaging
• Messaging with a JAXM provider
See “Developing Java Web Services”, Chapter 9
2
Message-based communication
• Send an XML document, not parameters
• No necessary response
– But a later message may be a response :-)
“Developing Java Web Services”, figure 3.4
3
SOAP with Attachment API for Java
• Defined by Java Community Process JSR-67
• Allows explicit construction and unpacking of
SOAP messages using Java
• See example client in
src/sample/client/SaajClient.java
• Can be used
– to implement SOAP clients and servers directly over
HTTP (as in example)
– With JAXM to support indirect and asynchronous
communication (see later)
4
Recap: SOAP Message structure
“Developing Java Web Services”, figure 4.1
5
SOAP: main classes & interfaces
• javax.xml.soap.SOAPMessageFactory
– Source of new SOAPMessages
• javax.xml.soap.SOAPMessage
– An entire SOAP message, including attachments (not
XML)
• javax.xml.soap.SOAPPart,
javax.xml.soap.AttachmentPart.
– SOAP and Attachment Part(s) of a SOAPMessage
– SOAP Part has SOAPEnvelope & MIMEHeaders
• javax.xml.soap.SOAPEnvelope
– Contains SOAPHeader &SOAPBody
6
• javax.xml.soap.SOAPHeader &
javax.xml.soap.SOAPHeaderElement
• javax.xml.soap.SOAPBody &
javax.xml.soap.SOAPBodyElement
– The body and body elements
• javax.xml.soap.SOAPElement
– (Interface) Any SOAP-related XML element in a
SOAP message
• javax.xml.soap.Node
– Any XML element in a SOAP message (compare XML
Document Object Model)
• javax.xml.soap.SOAPFault
– Representation of a SOAP Fault
7
Using SAAJ with HTTP: client
• javax.xml.soap.SOAPConnection.
– obtained from SOAPConnectionFactory
– Supports request/response over HTTP
– E.g. from sample client:
SOAPMessage rp = conn.call(msg, urlval);
8
Using SAAJ/JAXM with no JAXM
Provider: server
• Extend javax.xml.messaging.JAXMServlet
and implement
javax.xml.messaging.ReqRespListener
– E.g.
public class ReqRespServlet extends JAXMServlet
implements ReqRespListener
{
public SOAPMessage
onMessage(SOAPMessage msg)
{
//Implement your business logic here
return respMsg;
}
}
9
• Servlet runs in container which handles
HTTP
• JAXMServlet handles
– converting the POSTed SOAP message
(MIME-encoded) into a
javax.xml.soap.SOAPMessage
– calling onMessage()
– Converting the returned SOAPMessage into
the HTTP response
10
Main JAXM classes & interfaces
• javax.xml.messaging.OneWayListener
– Interface for receiving a SOAPMessage
public void onMessage(SOAPMessage msg);
• javax.xml.messaging.ReqRespListener
– Interface for receiving a SOAPMessage and replying
public SOAPMessage onMessage(SOAPMessage msg);
• javax.xml.messaging.JAXMServlet
– Utility servlet for doing JAXM HTTP-based message receivers
• javax.xml.messaging.ProviderConnection
– Interface for communicating with JAXM “Provider” (see later)
• javax.xml.messaging.Endpoint
– Endpoint (client or service) identifier; URI
11
Recap: Message-Oriented
Middleware (MOM)
Application A
Adapter API
MOM
infrastructure
Adapter API
Application B
Messages
sent & received
(& transactions contexts)
Persistence
After “Developing Java Web Services” figure 1.6
12
JAXM-based application
architecture
“Developing Java Web Services”, figure 9.1
13
JAXM-based application
architecture details
ProviderConntection:
allows message sending
and registering of receivers
OneWayListener or
ReqRespListener interface
to receive message(s).
Identified by an Endpoint (URI)
Message bean or
JAXMServlet
Logical distributed
JAXM provider
Local
API/client
for provider
14
Simple JAXM provider realisation
Provider
Infrastructure
Including
persistence
Messages
to/from
external
services
Provider
Connection
w. Endpoint
Local
API/client
for provider
Messages
between
client and
provider
15
JAXM Provider
• C.f. MOM infrastructure
• Handles message transmission and routing
– Including message reliability (through retransmission)
• Uses “Profiles” to specify the underlying
messaging protocol
– E.g. SOAP-RP (SOAP Routing Protocol) or ebXML
• Handles synchronous vs asynchronous
interactions
– E.g. mapping asynchronous client request to
synchronous server handling
16
Conclusion
• SAAJ allows direct
construction/consumption of SOAP
messages
– No mapping to programming language types
or paradigms (such as RPC)
• JAXM supports messaging-style use of
SOAP, in particular asynchronous
interactions
– E.g. extended business processes
17