Java RMI, JAX-RPC and JWSDP

advertisement
Java RMI and WS
B. Ramamurthy
Page 1
Inside RMI
• http://java.sun.com/j2se/1.5.0/docs/index.html
• Basic RMI classes: /usr/java1.1/src/java/rmi
–
–
–
–
–
java.rmi.registry.*
java.rmi.Naming class (static/class methods)
java.rmi.Remote interface (marker interface)
java.rmi.server.*
Default RMI port 1099
– Both lookup from local and remote are
acceptable.
Page 2
Implementation of RMI (5.2.5)
Page 3
The role of proxy and skeleton
in remote method invocation
server
client
object A proxy for B
Request
skeleton
& dispatcher
for B’s class
remote
object B
Reply
Remote Communication
reference module module
servant
CommunicationRemote reference
module
module
Object A invokes a remote object in Object B for which it holds a remote object
reference.
“System Model”
Page 4
RMI Internals: Communication
Module
• Carries out request-reply protocol;
• On the client side {message type, message
id, remote reference to object} are gathered
and sent out. At most once invocation
semantics;
• On the server side, it gets local reference for
remote reference from remote reference
module, invokes a dispatcher with this
reference.
• See UnicastRemote (implements
UnicastRemote)
Page 5
RMI Internals: Remote
Reference module
• Responsible for translating between
local and remote object references and
for creating remote object references.
• A remote object table has a mapping
between local and remote references. A
table at server (entry for object ref for
B) and a table at client (entry for object
ref for proxy B).
Page 6
RMI Internals: Remote
References
• Action of remote reference module: See
RemoteRef.java interface
– When a remote object is to be passed as
argument or result for the first time, the remote
ref is asked to create a remote ref object which is
added to the table.
– When a remote object reference arrives in a
request or reply, the remote ref module is asked
for corresponding local object ref, which may
either a proxy or remote object. If it is not in the
table RMI runtime creates it and asks remote ref
module to add it to the table.
Page 7
RMI Internals: RMI software
•
•
•
•
•
•
•
•
Layer of software between application level objects and communication
and remote reference modules: “Middleware”
Proxy: provides remote access transparency. One proxy for every remote
object in the client.
Dispatcher: A server has one dispatcher and skeleton for each class
representing a remote object.
– It receives request message from comm. Module
– It used MessageId to select appropriate method in skeleton.
– Proxy and dispatcher use same MessageId.
Skeleton: A class of remote object has a skeleton that implements of the
remote interface. All the access dependencies are hidden in this class. A
remote object has a servant that directly implements the methods. Java 5
creates this dynamically.
Proxies, dispatcher and skeleton are automatically generated by interface
compiler.
Binder: binds textual names to remote object references. RMiRegistry is a
binder; Naming class; see fig.5.13
Server Threads: one thread per invocation
Distributed garbage collection: See Andrew Birell’s paper [1995].
Page 8
RMI Internals: Distributed
Garbage Collection
•
•
•
•
•
•
•
•
•
Based on reference counts.
Local garbage collectors and a distributed support.
Each server holds the list of processes that hold remote object references: for
example, B.Holders
When a client C first receives a remote reference to a particular remote object,
say B, it makes a addRef(B) invocation to server of that remote object and then
creates proxy; server adds C to B.Holders.
When client C’s garbage collector finds that proxy is no longer reachable (ref
count), it makes a removeRef(B) invocation to server and then deletes proxy;
the server removes C from B.Holders.
When B.Holders is empty, server’s local garbage collector will reclaim the space
occupied B unless there are any local holders.
These extra calls for updates occur during proxy creation and deletion and do
not affect normal opertion.
Tolerates communication failures: addRef() and removeRef() are idempotent:
effects of N > 0 identical requests is the same as for a single request.
If addRef() fails with an exception, proxy is not created, removeRef() is
transmitted; removeRef() failures are dealt with by “leases” (Jini kind).
Page 9
RMI Internals: Use of
Reflection
• What is reflection? (See Reflection package)
• Reflection enables Java code to discover
information about the fields, methods and
constructors of loaded classes, and
• To use reflected fields, methods, and
constructors to operate on their underlying
counterparts on objects, within security
restrictions.
http://java.sun.com/docs/books/tutorial/reflect/class/index.html
• Reflection feature allowed for dynamic creation of skeleton and
proxy in Java 2 version onwards.
• Skeleton has been deprecated since JDk1.4.x
• Read more about reflection model of computing.
Page 10
A Little bit of Reflection
• Method class, invoke method
• Invoke method requires two
parameters: first the object to receive
invocation, second an array of Object
parameters.
• Invoke executes the method on the
object and returns result as Object.
• Method m;
11
• Page
Object
result = m.invoke(String, Args);
Using Reflection in RMI
• Proxy has to marshal info. about a method and its
•
•
•
•
•
arguments into a request message.
For a method it marshals an object of class Method
into the request. It then adds an array of objects for
the method’s arguments.
The dispatcher unmarshals the Method object and its
arguments from request message.
The remote object reference is obtained from remote
ref. table.
The dispatcher then calls the “invoke” method on the
object reference and array of arguments values.
After the method execution the dispatcher marshals
the result or any exceptions into the reply message.
Page 12
Putting it all together
Server side:
 Write a an interface and implement it.
Implements Remote,
 Inside code publishes the object by
(exporting to runtime) and by registering it.
Client Side:
 Code: look up server object name from the
registry {host, port};
 Invoke operations.
Page 13
Lifecycle of a remote call
1. First time, an operation is invoked, remote
object reference is obtained from remote
registry, addRef() is sent to remote server,
an entry made in the local ref table and
proxy is created.
2. Proxy has message ids while the client’s ref
table has remote object reference.
3. Remote ref, method id and arguments are
marshaled into a message and sent across
via the communication module.
Page 14
Lifecycle of a remote call (contd.)
• On the server side RMI runtime maps the
remote reference to a local object.
• Unmarshalls the operation and parameters
and uses reflection to “invoke” the method on
the object reference.
• The result is marshaled back into the
response and sent back to the caller.
• “Skeleton” that includes the “dispatch” is
subsumed into the RMI runtime in the latest
versions of Java.
Page 15
Critique of RMI (Sun Java’s) /RPC
(Microsoft’s)
• Performs very well for single-platform limited
•
•
•
•
•
•
•
distributed system.
Platform dependent
Tightly coupled
Inherently synchronous (No chance for eventing or
notification)
Object-oriented: Objects not deployable units
Non-standard
Not scalable, location dependent, no global
registry/discovery
Object reference passed as parameter and/or
returned as result.
Page 16
Interface Semantics
Process1
Process2
getCustomer()
retrieveCustomerData()
returnResult()
Semantics of the activity is explicitly stated in the message/method call
Page 17
Payload Semantics
Envelop
With
message
Process 1
Process 2
Requested transaction/activity is embedded in the message
Details of the activity not explicit; the semantics are embedded in the message
Page 18
Payload Semantics
Client
Queue
Server
createMes s age()
s endMes s age()
onMessage()
receiveMes s age()
receiveMes s age()
Page 19
Payload semantics is generic
String transferMoney (amt: decimal,
accTo: String)
{ …}
String executeService (message: String)
{ …}
Page 20
XML
• XML is a markup language, developed by
W3C (World Wide Web Consortium), mainly
to overcome the limitations of HTML.
• But it took a life of its own and has become a
very popular part of distributed systems.
• We will examine its definition, associated
specifications (DTD, XSLT etc.), Java APIs
available to process XML, protocols and
services based on XML, and the role XML
plays in a distributed computing environment.
Page 21
Memo.html vs memo.xml
<!DOCTYPE html PUBLIC "-//W3C//DTD
HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type"
content="text/html; charset=ISO-8859-1">
<title>memo.html</title>
</head>
<body>
<h3>Hello World</h3>
Bina<br>
CSE4/586 Students <br>
Good Morning everyone<br>
BR<br>
<br>
</body>
</html>
Page 22
<?xml version="1.0" ?>
<!DOCTYPE memo (View Source for full
doctype...)>
- <memo>
<header>Hello World</header>
<from>bina</from>
<to>CSE4/586 Students</to>
<body> Good Morning
everyone</body>
<sign>br</sign>
</memo>
XML to SOAP
• Simple xml can facilitate sending
message to receive information.
• The message could be operations to be
performed on objects.
• Simple Object Access Protocol (SOAP)
Page 23
Web Services
•
•
•
•
•
•
•
Web Services is a technology that allows for applications to
communicate with each other in a standard format.
A Web Service exposes an interface that can be accessed
through messaging.
Deployable unit.
A Web service uses protocol to describe an operation and the
data exchange with another web service. Ex: SOAP
Platform independent, say, through WSDL.
Publishable, discoverable, searchable, queryable
Scalability issues: A group of web services collaborating
accomplish the tasks of a large-scale application. The
architecture of such an application is called Service-Oriented
Architecture (SOA).
Page 24
Web Services and SOA
• Web Services is a technology that allows for
applications to communicate with each other in a
standard format.
• A Web Service exposes an interface that can be
accessed through XML messaging.
• A Web service uses XML based protocol to describe
an operation or the data exchange with another web
service. Ex: SOAP
• A group of web services collaborating accomplish the
tasks of an application. The architecture of such an
application is called Service-Oriented Architecture
(SOA).
Page 25
A Little bit of History: XML to
SOAP
• Simple xml can facilitate sending
message to receive information.
• The message could be operations to be
performed on objects.
• Standardize the tags for object access.
• Simple Object Access Protocol (SOAP).
Page 26
SOAP Request (Not WS request)
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getProductDetails xmlns="http://warehouse.example.com/ws">
<productId>827635</productId>
</getProductDetails>
</soap:Body>
</soap:Envelope>
Page 27
SOAP Reply
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getProductDetailsResponse
xmlns="http://warehouse.example.com/ws">
<getProductDetailsResult>
<productName>Toptimate 3-Piece Set</productName>
<productId>827635</productId>
<description>3-Piece luggage set. Black
Polyester.</description>
<price>96.50</price>
<inStock>true</inStock>
</getProductDetailsResult>
</getProductDetailsResponse>
</soap:Body>
</soap:Envelope>
Page 28
SOAPWeb Services (WS)
Take a look at
1. http://www.w3.org/DesignIssues/WebServices.html
2. O’Reilly book on Web Services: Kim Topley’s Webservices
in a Nutshell:
http://www.oreilly.com/catalog/javawsian/index.html
This link has a sample chapter (SAAJ) and zip of all
examples in the book.
Page 29
Web Services (Colouris)
• A web service provides a service interface
enabling clients to interact with servers in
a more general way than web browsers
do.
• Clients access operations in the interface
usually by XML messages over http.
• However other architectural models such
as REST and CORBA could access WS.
• WSDL provides additional details than for
standard operation: for encoding, security,
communication
and location.
Page 30
Web services infrastructure and
components
Applications
Directory
service
Web Services
Security
Choreography
Service descriptions (in WSDL)
SOAP
URIs (URLs or URNs)
Page 31
XML
HTTP, SMTP or other transport
SOAP message in an envelope
envelope
header
header element
header element
body element
body element
body
Page 32
Example of a simple request without
headers
env:envelope
xmlns:env =namespace URI for SOAP envelopes
env:body
m:exchange
xmlns:m = namespace URI of the service description
m:arg1
Hello
m:arg2
World
In this figure and the next, each XML element is represented by a
shaded box with its name in italic followed by any attributes and its
content
Page 33
Example of a reply corresponding to the
request in
env:envelope
xmlns:env = namespace URI for SOAP envelope
env:body
m:exchangeResponse
xmlns:m = namespace URI for the service description
m:res1
World
Page 34
m:res2
Hello
POST /examples/stringer
endpoint address
Host: www.cdk4.net
Content-Type: application/soap+xml
Action: http://www.cdk4.net/examples/stringer#exchange
<env:envelope xmlns:env=namespace URI for SOAP
> envelope
<env:header> </env:header>
<env:body> </env:body>
</env:Envelope>
Page 35
action
HTTP
header
SOAP client-server
communication
Services, ports and bindings
• Service endpoint interface (SEI) or service
endpoint that defines one or more operations
that the web service offers.
• Access to an endpoint is provided by binding
it to a protocol stack through a port.
– A port has an address that the client can use to
communicate with the service and invoke its
operations.
• An endpoint can be bound to different ports
each offering a different suite of protocols for
interaction.
Page 36
Endpoint, Port and binding
Web service
endpoint
Port1
SOAP1.1
Over http
port2
SOAP 1.1 over
https
port3
Other. Ex:
ebXML over
SMTP
https 1.1 transport
soap1.1 messages
Page 37
Web services Client
WS Interoperability Infrastructure
WSDL
Service Description
SOAP
XML Messaging
HTTP
Network
Page 38
Download