Title: ServiceOriented File Sharing March 5, 2004
1Service-OrientedFile SharingMarch 5, 2004
Michael Sobolewski sobol_at_cs.ttu.com
Sekhar Soorianarayanan Ravi-Kiran Malladi Venkata
1
2Agenda
- FIPER/SORCER
- File Store Requirements
- File Store Architecture
- Design and Implementation
- Filter Service
- FileStore Use Cases
- Security Issues
- Future Work
3Waves of Network Computing
4SORCER Vision
Federated S2S environment to ...
Build new services Convert legacy apps to
dynamic SORCER services (J2EE technology)
Assemble SORCER services together (RMI, Jini,
Rio, JXTA, WS technologies) Create modern
clients accessing services
5Web User Agents
6Command Design Pattern
5
6
4
3
Cmd 1
1
Cmd 2
File System
2
Cmd 3
Cmd Manager
ACLManager
FileStoreProvider
2
JDBC
Cmd 4
RDBMS
Cmd 5
API Classes
1
3
4
Utility Classes
5
6
1,1 - Requestor requests FSS provider for
file upload/download based on DocumentDescriptor
2,2 - FSS forwards it through the command
execution engine 3,3 - Database operations
are done 4,4 - FSS spawns a
RemoteOutputStream/RemoteInputStream server based
on-if client wants to
upload/download and returns back the
InputStram/OutputStream adapter inside
DocumentDescriptor 5,6 - Client
communicates to server via OutputStreamProxy and
uploads file. 5,6 - Client communicates to
server via InputStreamAdapter and downloads file.
7FileStore Clients Interactions
SORCER Distributed File System
File System (Linux)
File System (UNIX)
File System (Win 2003)
FileStorer SORCER Service
MS SQL
ORACLE
mySQL
DBMS
DBMS
FileStorer SORCER Service
DBMS
Servlet Engine
Clients
Client request is passed on from one server to
another until one of the File Store service has
the file actually present in its File System and
the handle of file is passed onto client.
8RemoteInputStream
- public interface RemoteInputStream extends Remote
- int read(byte buffer, int offset, int count)
- throws RemoteException, IOException
- //
-
9Adapter Design Pattern
- Adapter Design Pattern
- convert the interface of a class into another
interface client expects - used when the client and the real implementing
class have different interfaces - Solution
- interface Service
- class ServiceImplementation implements Service
- interface ExpectedInterface
- class ServiceAdapter implements
ExpectedInterface
10RemoteInputStream
- public interface RemoteInputStream extends Remote
- byte read(int count) throws RemoteException,
IOException - ...
-
- public class InputStreamAdapter extends
InputStream implements Serializable - private RemoteInputStream rin
- public int read(byte buffer, int offset, int
count) throws IOException - byte result rin.readBytes(count)
- System.arrayCopy(result, 0, buffer, offset,
result.length) - return result.length
-
-
-
- public interface RemoteInputStreamServer extends
UnicastRemoteObject implements RemoteInputStream
- private InputStream in
11RemoteOutputStream
- public interface RemoteOutputStream extends
Remote - int write(byte buffer, int offset, int count)
- throws RemoteException, IOException
-
-
- Problems
- client expects a real OutputStream
12Proxy Design Pattern
- Proxy Design Pattern
- used when the client and the real implementing
class have the same interfaces - Solution
- OutputStream - the type-compatible class
- RemoteOuputStream the intermediate remote
interface - OutputStreamProxy the proxy class
- RemoteOutptServer implements RemoteOutputStream
- The real OutputStream on FileOutputStream
13RemoteOutputStream
- public interface RemoteOutputStream extends
Remote - void write(byte buffer, int offset, int count)
throws RemoteException, IOException -
-
- public class OutputStreamProxy extends
OutputStream - implements Serializable
- private RemoteOutputStream rout
- public void write(byte buffer, int offset, int
count) throws IOException - rout.write(buffer, offset, count)
-
-
-
- public interface RemoteOutputStreamServer extends
UnicastRemoteObject implements RemoteOutputStream
- private OutputStream out
- public void write(byte buffer, int offset, int
count) throws IOException, RemoteException
14Document Descriptor
Remote
OutputStream
InputStream
RemoteInputStreamServer
RemoteOutputStreamServer
contains
contains
InputStreamAdapter
OutputStreamProxy
contains
contains
15Document Descriptor Details
Remote
OutputStream
InputStream
write( int ) write( byte ) write( byte, int,
int)
read( ) int read( byte ) int read( byte,
int, int) int
write( int ) write( byte ) write( byte,
int, int)
RemoteOutputStream
read( int ) byte
RemoteInputStream
FileStorer
getInputDescriptor() getOutputDescriptor()
contains
contains
InputStreamAdapter
OutputStreamProxy
read( ) int read( byte ) int read( byte,
int, int) int
write( int ) write( byte ) write( byte, int,
int)
DocumentDescriptor
contains
contains
setDocumentID(String) setFolderPath(String) setDoc
umentName(Name) setPrincipal(GAppPricipal)
16Servlet Engine vs. FileStore Provider
Download
Servlet Engine
FS Provider
HTTP
JRMP
RemoteInput StreamServer
Uses
Uses
GApp
Uses
RemoteOutput StreamServer
UploadServlet
HTTP
JRMP
Upload
17RemoteFileStore Client
- Client upload
- documentDescriptor
- RemoteFileStore.getOutputDescriptor(documentDesc
riptor) - try
- ((OutputStreamProxy)documentDescriptor.out).uplo
ad(clientFile) - catch (Exception e)
- e.printStackTrace()
-
- Client download
- documentDescriptor
- RemoteFileStore.getInputDescriptor(documentDescr
iptor) - try
18Core FSS Classes
jgapp.dm.util.DocumentDescriptor
InputStream jgapp.rmi.InputStreamAdapter jgapp.rm
i.RemoteInputStream jgapp.rmi.RemoteInputStreamSer
ver
OutputStream jgapp.rmi.OutputStreamProxy jgapp.rm
i.RemoteOutputStream jgapp.rmi.RemoteOutputStreamS
erver
FileStore sorcer.core.provider.FileStorer sorcer.c
ore.provider.FileStoreProviderImpl
public interface FileStorer extends Remote
public DocumentDescriptor getInputDescriptor(Docum
entDescriptor desc) throws RemoteException,
IOException, InvalidTransactionException
public DocumentDescriptor getOutputDescriptor(Docu
mentDescriptor desc) throws RemoteException,
IOException, InvalidTransactionException
19Smart Filter Design
- Filters are used to filter out some specific
information referenced by the Document
Descriptor. - The information can be from the Database,
Document etc. Each of them can have their own
Filter. -
- Each Filter can have its own specific
FilterReaderWriter. - FilterService is provided by FSS. Helps to
remotely set and get specific data as described
by the Document Descriptor and the Filter. - Smart access of data. Useful when small amount
of data needs to be accessed from huge files
across network.
20Nozzle Combustor CAD/IO B2B
(UG)
(ProE)
1. Update combustor PCS
2. Request for nozzle validation
5. Perform CFD blow analysis
4. Perform modal analysis
3. Check for nozzle insertion
(Blow Analysis)
21B2B CAD Exchange
CAD Reader Provider
3. Pass to cadImport
5.Stores the result .prt to FS
8. Return to client
GE file store
7. Return to CAD Reader
PH file store
CAD Import Provider
4. gets .gdx files from FS
2. provider stores .gdx into file store
1.Client uploads input file into the file store
Return and save a local copy of .prt
CAD Export Provider
User A Retrieving
https
User X release to user A
22B2B Setup
23P2P Service Oriented File
Relay1
Relay2
5
4
2
6
3
1
Client
- Request for File via DocumentDescriptor
- Check if File exists.
- if (exists) return outputStreamAdapter
- else discover peer return peer
- 3. Receive stream to read or info of peer which
contains the resource
4. Request the relay peer for file if the file
exists with peer outside the virtual
organization. 5. Discover the other peer. Get the
resource (file) and return the proxy to client
for download
24(No Transcript)