www.cs.nott.ac.uk/~cmg/G52IWS/messaging

fishnibblersspongySoftware and s/w Development

Dec 14, 2013 (3 years and 5 months ago)

68 views

1

G52IWS: XML Messaging
(briefly)

Chris Greenhalgh

2007
-
11
-
30

2

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

3

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

4

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)

5

Recap: SOAP Message structure

“Developing Java Web Services”, figure 4.1

6

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

7


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



8

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);


9

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;


}

}


10


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

11

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

12

Recap: Message
-
Oriented
Middleware (MOM)


Application A

Persistence

Adapter API

Application B

MOM

infrastructure

Adapter API

After “Developing Java Web Services” figure 1.6

Messages

sent & received

(& transactions contexts)


13

JAXM
-
based application
architecture

“Developing Java Web Services”, figure 9.1

14

JAXM
-
based application
architecture details

“Developing Java Web Services”, figure 9.1

ProviderConntection:

allows message sending

and registering of receivers

Logical distributed

JAXM provider

OneWayListener or

ReqRespListener interface

to receive message(s).

Identified by an Endpoint (URI)

Message bean or

JAXMServlet

Local

API/client

for provider

15

Simple JAXM provider realisation

Local

API/client

for provider

Provider

Infrastructure

Including

persistence

Provider

Connection

w. Endpoint

Messages

between

client and

provider

Messages

to/from

external

services

16

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

17

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