128 Patterns: Serial and Parallel Processes
model, for security, and for the coupling strength between requestor and
provider. The simplest effect is that parameters in Web services are
in-parameters and never ever in-out-parameters. To return a response value, you
have to use the return value of the method.
The security impact results from the fact that in the case of CORBA or RMI the
client is remotely acting in the address space of the server application.
Reference errors can lead to server-side memory access exceptions or data
corruption for example.
Furthermore, in the case of CORBA and RMI the structure of the stub objects is
identical to those on the server side. Changing the object structure on the server
side needs a refactoring of the clients. In the case of SOAP, no object structures
are exposed, except for methods that can have objects as parameters and return
values. Changing the object structure on the server side need not lead to a
refactoring of the client as a direct consequence.
7.3 Java Message Service
Messaging middleware is a popular choice for accessing existing enterprise
systems in an asynchronous manner. A standard way for using messaging
middleware from a Java application is using the Java Message Service (JMS)
interface. JMS offers Java programmers a common way to create, send, receive
and read enterprise messages. The JMS specification was developed by Sun
Microsystems with the active involvement of IBM, other enterprise messaging
vendors, transaction processing vendors, and RDBMS vendors.
In IBM WebSphere Application Server V5.0, the J2EE 1.3 specification is
implemented (including JMS 1.0 and EJB 2.0).
According to the JMS 1.0 specification, a message provider is integrated in an
application server. As shown in Figure 7-2 on page 129, the integrated message
provider makes it possible to communicate asynchronously with other
WebSphere applications without installing separate messaging software like IBM
WebSphere MQ. WebSphere Application Server’s integrated JMS server is
based on IBM WebSphere MQ.