Presentation is loading. Please wait.

Presentation is loading. Please wait.

Jini Technology 제 1 회 한국 자바 개발자 컨퍼런스 발표자 : 강신동 Mobile : 016-201-5053 소속 : ㈜ idosi.com 대표이사 주최 : JavaCommunity.Org.

Similar presentations


Presentation on theme: "Jini Technology 제 1 회 한국 자바 개발자 컨퍼런스 발표자 : 강신동 Mobile : 016-201-5053 소속 : ㈜ idosi.com 대표이사 주최 : JavaCommunity.Org."— Presentation transcript:

1 Jini Technology 제 1 회 한국 자바 개발자 컨퍼런스 발표자 : 강신동 Email : sindong2@chollian.net 강신동 @idosi.com Mobile : 016-201-5053 소속 : ㈜ idosi.com 대표이사 주최 : JavaCommunity.Org 발표일자 : 2000 년 4 월 9 일

2 목 차목 차 1. Jini 개요 2. Jini site 와 개발도구 3. bytecode 이동과 instance 이동 4. Discovery 5. Join 6. Lookup 7. Lookup reservation 8. Lease 9. Using back-end process 10. RMI diagram 11. Jini diagram 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

3 Jini Home Network

4 Jini Client - Server Web server chip Jini 의 실예 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

5 Jini site 와 개발도구 JDK 1.2 (Java 2) 이상 rmid : lookup daemon Jini Technology Starter Kit (jini1.1 alpha) reggie : sun’s lookup service httpd web server for downloading rmi’s stub class Lookup service 이용을 위한 기본도구 Jini web site http://java.sun.com/jini http://www.jini.org http://artima.com/jini http://jiniworld.chonnam.ac.kr 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

6 bytecode 이동과 instance 이동 bytecode 의 network 이동 instance 의 network 이동 Ex) applet client 중심개념 실행코드가 run-time 상태의 client JVM 으로 이동 모든 instance 는 client 의 JVM 에서 생성된다 Ex) Jini service 중심개념 interface 이용 실행코드와 data 의 run-time 시 이동 service 에서 만들어진 instance 가 동적으로 client 의 JVM 에서 즉시 이용될 수 있는 특징 network 에서 이동된 instance 는 client 에서 만들어진 instance 처럼 이용 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

7 Discovery Lookup-service Service Client Service 는 자신을 등록하기 위해 network 상에서 Lookup service 를 찾는다. Client 는 등록된 Service 를 찾기 위해 network 상에서 Lookup service 를 찾는다. 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

8 Discovery protocol Lookup ServiceDiscoverer Request message UDP multicast Response message TCP unicast Multicast request protocol Lookup ServiceDiscoverer Request message TCP unicast Response message TCP unicast Multicast announcement protocol Announcement message UDP multicast Request message TCP unicast Response message TCP unicast Unicast discovery protocol 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

9 Discovery (receive ServiceRegistrar) Lookup-service Service Client ServiceRegistrar Service JVM Client JVM Lookup JVM 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

10 Discovery (code) UnicastDiscovery MulticastDiscovery Lookup-service 의 위치를 알고있는 경우 TCP/IP Socket 이용 직접 접속 (port 4160) synchronous processing LookupLocator lookup = new LookupLocator(“jini://jini.idosi.com”); ServiceRegistrar registrar = lookup.getRegistrar(); Lookup-service 의 위치를 모르는 경우 Multicast 이용 lookup-service 응답기다림 service 에서 cient 로 TCP/IP Socket 이용연결 asynchronous processing LookupDiscovery discover = new LookupDiscovery(LookupDiscovery.ALL_GROUPS); discovery.addDiscoveryListener(listener); public void discovered(DiscoveryEvent evt) { ServiceRegistrar[] registrars = evt.getRegistrars(); } 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

11 Join (service copy) Service Service Copy Service Proxy ServiceRegistrar ServiceItem Service JVM 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

12 Join (regist service proxy) Lookup-service Service Service Copy Service Proxy register ServiceRegistrar Service JVM Lookup JVM 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

13 Join (code) ServiceRegistrar registrar = …; ServiceID id = null; // 전세계에서 유일한 id 부여 Entry entry = null; // service 의 부가정보제공 MyServiceInterface proxy = createServiceInterfaceInstance(); ServiceItem item = new ServiceItem(id, proxy, entry); long leaseTime = 1 * 60 * 1000; // msec ServiceRegistration registration = registrar.register(item, leaseTime); 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

14 Lookup (receive service copy) Lookup-service Lookup JVM Client ServiceTemplate Service copy Client JVM 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

15 Lookup (code) ServiceRegistrar registrar = …; ServiceID id = null; // 전세계에서 유일한 id 부여 Entry entry = null; // service 의 부가정보제공 Class[] types = { MyServiceInterface.class }; ServiceTemplate template = new ServiceTemplate(id, types, entry); Object o = registrar.lookup(template); if (o instanceof MyServiceInterface) { MyServiceInterface service = (MyServiceInterface) o; Object result = service.callMyMethod(); } 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

16 Lookup Reservation Client ServiceTemplat e Client JVM RemoteEventListener Lookup-service Lookup JVM notify ServiceEvent ServiceItem Service Copy 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

17 Lookup Reservation (code) ServiceRegistrar registrar = …..; Entry entry = null; long leaseTime = 1 * 60 * 1000; EventRegistration evtreg = registrar.notify(template, ServiceRegistrar.TRANSITION_NOMATCH_MATCH, myRemoteEventListener, entry, leaseTime); MyRemoteEventListener extends UnicastRemoteObject implements RemoteEventListener public void notify(RemoteEvent evt) throws RemoteException, UnknownEventException { if (evt instanceof ServiceEvent) { ServiceEvent sevt = (ServiceEvent) evt; ServiceItem item = sevt.getServiceItem(); MyServiceInterface service = (MyServiceInterface) item.service; Object result = service.callMyMethod(); } 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

18 Lookup federation topology Community of communities Hierarchies StarsIsland 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

19 Lease (service side) Lookup-service Service register ServiceRegistrar Service JVM Lookup JVM ServiceRegistration Lease renew() 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

20 Lease (service code) ServiceRegistration registration = registrar.register(…….); public void run() { while (true) { try { Lease lease = registration.getLease(); long expiration = lease.getExpiration(); long sleepTime = computeSleepTime(); Thread.sleep(sleeptime); lease.renew( 1 * 60 * 1000); } Lease expiration time line now renew zone 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

21 Lease (client side) Lookup-service notify ServiceRegistrar Client JVM Lookup JVM EventRegistration Lease renew() Client 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

22 Lease (client code) ServiceRegistration servreg = registrar.register(……); Lease lease = servreg.getLease(); long expiration = lease.getExpiration(); if ( RENEW_ZONE) { lease.renew(LEASE_TIME); } EventRegistration evtreg = registrar.notify(……); Lease lease = evtreg.getLease(); long expiration = lease.getExpiration(); if ( RENEW_ZONE) { lease.renew(LEASE_TIME); } service renew lease client renew lease 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

23 Using Back-end Process Lookup-service Lookup JVM Service Service Proxy Remote Server Client RMI, Socket... Service JVMClient JVM choke point 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

24 RMI diagram RemoteInterface RemoteImpl UnicastRemoteObject SkeletonStub RemoteInterface rmiregistry webserver client Server JVM Client JVM bind lookup rmi stubcode 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

25 Jini diagram (service copy) MyInterface Serializable MyService rmid (reggie) register MyInterface client lookup MyService Web server MyInterface Service JVM Client JVM 강신동 (sindong2@chollian.ne,t, 강신동 @idosi.com)

26 Jini diagram (service proxy) MyInterfaceSerializable rmid (reggie) register MyInterface client lookup MyInterface Service JVM Client JVM RemoteProtocol proxy RemoteInterrface Backend SkeletonStub rmi Web server


Download ppt "Jini Technology 제 1 회 한국 자바 개발자 컨퍼런스 발표자 : 강신동 Mobile : 016-201-5053 소속 : ㈜ idosi.com 대표이사 주최 : JavaCommunity.Org."

Similar presentations


Ads by Google