Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references...
Transcript of Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references...
![Page 1: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/1.jpg)
1Distributed programming and java
March 31st 2010
![Page 2: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/2.jpg)
2Overview
RMI mechanism
Web services
![Page 3: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/3.jpg)
3RMI
Overview of RMI
Infrastructure
How to create a RMI server/client
![Page 4: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/4.jpg)
4RMI overview
Allow distributed computing among objects
Limited functionalities (RPC among objects)
Part of core JDK platform since 1.1
java.rmi package
Similar technologies
Microsoft .NET Remoting
RPC
CORBA
SOA
![Page 5: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/5.jpg)
5RMI overview
Allow communications between two JVMs over a network
The distribution is made at the object level
“seamless” connection from a client to a remote server
Relies on serialization
Custom classes have to implement the java.io.Serializable interface
Primitive types are sent by value
![Page 6: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/6.jpg)
6RMI Infrastructure
Client JVMClient JVM
Server JVM
Remote object
Registry JVM
Server1:create
Register
“registrationName”
2:register
![Page 7: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/7.jpg)
7RMI Infrastructure
Client JVM
Client
Client JVM
Client
Client JVM
Skeleton Remote object
Server
Registry JVM
Register
“registrationName”
3:ask for registrationName
StubStub Skeleton
4:returns
![Page 8: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/8.jpg)
8RMI Infrastructure
Client JVM
Client Stub
Client JVM
Client Stub
Client JVM
Skeleton Remote object
Server
Registry JVM
Register
“registrationName”
5: method invocation and return
![Page 9: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/9.jpg)
9RMI registry
Used for looking up Objects
Servers register their Objects
Clients use to find and obtain remote references
Runs on port 1099 by default
![Page 10: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/10.jpg)
10How to create a RMI server/client?
Declare a remote interface
extends java.rmi.Remote
Define a class that implements the remote Interface
extends java.rmi.RemoteObject or java.rmi.UnicastRemoteObject
![Page 11: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/11.jpg)
11How to create a RMI server/client?
Remote interface declaration
public interface BankAccount extends java.rmi.Remote {public void deposit(float amount) throws java.rmi.RemoteException;public void withdraw(float amount) throws OverdrawnException,
java.rmi.RemoteException;public float getBalance() throws java.rmi.RemoteException;
}
![Page 12: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/12.jpg)
12Distributed Garbage Collector
Local references counted normally
clean/dirty state for the remote references
java.rmi.server.Unreferenced for notifications when no more clients
“lease” for a remote reference
Duration (java.rmi.dgc.leaseValue to configure, default to 10 minutes)
Consequence
Remote reference must not be trusted
![Page 13: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/13.jpg)
13Summary
RMI provides a “basic” mechanism
Distributed garbage collection
marshalling/unmarshalling
Limitations
Synchronous calls
Asychronous notifications
Lack high-level services
persistence, messaging, thread management, logging
No way to set a threading policy
Servers have to be thread safe
![Page 14: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/14.jpg)
14Web services - overview
Independent of the implementation used
e.g. a .net client can access to a java server
Main technologies
XML (Extensible Markup Language)
SOAP (Simple Object Access Protocol) allow client to call remote service. The msg format is XML.
WSDL (Web Services Description Language)
UDDI (Universal Description, Discovery, and Integration) a standard used for publishing/query web services
JAX-WS : an API to develop web services in JAVA
![Page 15: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/15.jpg)
15Web services architecture
UDDI
WSDLdocument
Web service provider Client
WSIL
![Page 16: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/16.jpg)
16WSDL
Describe the methods provided by the web service
Can be requested through a http request
e.g.: http://services.aonaware.com/DictService/DictService.asmx?wsdl
Allow the generation of the client code
![Page 17: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/17.jpg)
17WSDL
Java declaration for class named “Simple”
public String hello( String callerName ) {return "Hello " + callerName;
}
WSDL declaration
Declaration of exchanged messages
<message name="hello"> <part name="parameters" element="tns:hello"/></message>
Declaration of available “ports”
<binding name="SimplePortBinding" type="tns:Simple"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="hello"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation></binding>
![Page 18: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/18.jpg)
18SOAP
Allow to marshall/unmarshall the data to be transmitted
Example of a request
POST /InStock HTTP/1.1Host: www.example.orgContent-Type: application/soap+xml; charset=utf-8Content-Length: nnn
<?xml version="1.0"?><soap:Envelopexmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock"> <m:GetStockPrice> <m:StockName>IBM</m:StockName> </m:GetStockPrice></soap:Body></soap:Envelope>
![Page 19: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/19.jpg)
19Implementation of a web service with eclipse
Bottom-up approach
Extract the wsdl from a .java
Top-Down
Build a skeleton from a wsdl declaration
![Page 20: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/20.jpg)
20Bottom-up approach
A java class implementing a service:
The server and client-side code
![Page 21: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/21.jpg)
21Bottom-up approach
![Page 22: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/22.jpg)
22Bottom-up approach
![Page 23: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/23.jpg)
23Bottom-up approach
![Page 24: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/24.jpg)
24Bottom-up approach
![Page 25: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/25.jpg)
25Bottom-up: generation of a client
![Page 26: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/26.jpg)
26Summary
Data transmission: the classes used for the data must be
Public
With a constructor without parameter
With get/set methods for each property
Consequence of the heterogeneity (no serialization possible in general)
Synchronous calls
![Page 27: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/27.jpg)
27Top-Down: build a client from an existing service 1/3
![Page 28: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/28.jpg)
28Top-Down: build a client from an existing service 2/3
![Page 29: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/29.jpg)
29Top-Down: build a client from an existing service 3/3
![Page 30: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/30.jpg)
30View of the list with a browse
![Page 31: Distributed programming and java - Inria · Distributed Garbage Collector 12 Local references counted normally clean/dirty state for the remote references java.rmi.server.Unreferenced](https://reader030.fdocuments.net/reader030/viewer/2022041102/5edf5258ad6a402d666aac2d/html5/thumbnails/31.jpg)
31
Questions?