Slide 1

Slide 1 text

DistributeMe in 7 Slides and a Sentence by Leon Rosenberg anotheria.net 2009-2010 Freitag, 12. April 13

Slide 2

Slide 2 text

What is DistributeMe ‣ DistributeMe is the compile- and run-time utility for distributing java programs via interfaces. Freitag, 12. April 13

Slide 3

Slide 3 text

In a Monolith Service Interface Service Implementation Client knows, uses implements Service Factory creates uses, directly or indirectly, via DI or MetaFactory calls Freitag, 12. April 13

Slide 4

Slide 4 text

Distributed Service Interface Service Implementation Client knows, uses implements Service Factory creates uses, directly or indirectly, via DI or MetaFactory Service Stub implements Service Skeleton knows, uses Stub Factory creates uses, directly or indirectly, via DI or MetaFactory calls calls calls Freitag, 12. April 13

Slide 5

Slide 5 text

ClientVM ServerVM Deployed Service Interface Service Implementation Client knows, uses implements Service Factory creates uses, directly or indirectly, via DI or MetaFactory Service Stub implements Service Skeleton knows, uses Stub Factory creates uses, directly or indirectly, via DI or MetaFactory calls via rmi calls calls Freitag, 12. April 13

Slide 6

Slide 6 text

Code Authoring Service Interface Service Implementation Client knows, uses implements Service Factory creates uses, directly or indirectly, via DI or MetaFactory Service Stub implements Service Skeleton knows, uses Stub Factory creates uses, directly or indirectly, via DI or MetaFactory calls calls calls code written by developer code written by developer generated code Freitag, 12. April 13

Slide 7

Slide 7 text

ClientVM ClientVM Complete Server alpha VM Service1 Impl Client A Service1 Factory creates uses Service1 Stub Service1 Skeleton Stub1 Factory creates uses calls via rmi calls calls Client B Service2 Stub Stub2 Factory creates uses calls Client C Service1 Stub Stub1 Factory creates uses calls Server beta VM Service2 Impl Service2 Factory creates uses Service2 Skeleton calls Registry VM RegistryWebApp calls via rmi calls via rmi uses lookup registry Freitag, 12. April 13

Slide 8

Slide 8 text

Server Arch ApplicationServer 001 ServiceVM A service 1 ServiceVM B service2 ServiceVM C service4 ... ApplicationServer n service3 ... ServiceVM Q service 11 ServiceVM R service3 service12 ... RegistryServer RegistryTomcat VM registry.war Client 001 ClientTomcat VM ClientA.war Client 025 ClientTomcat VM ClientB.war Client 076 Client VM ClientC.jar Client 123 Client VM ClientD.jar Client VM ClientE.jar ... ... ... C l i e n t S i d e S e r v e r S i d e Freitag, 12. April 13

Slide 9

Slide 9 text

InCode @DistributeMe() public interface EchoService{ long echo(long parameter) throws EchoServiceException; } Service Interface Service Implementation public class EchoServiceImpl implements EchoService{ @Override public long echo(long parameter) { return parameter; } } Client public static void main(String a[]) throws Exception{ EchoService service = ... omitted; long param = 123; long echo = service.echo(param); System.out.println(“Service replied: “+echo); } public class EchoServiceFactory { public EchoService create(){ return new EchoServiceImpl(); } } Service Factory package org.distributeme.test.echo; http://svn.anotheria.net/opensource/distributeme/trunk Freitag, 12. April 13