giriş - Uluslararası Bilgisayar Enstitüsü

advertisement
JAVA Remote Method
Invocation (RMI)
Geylani Kardaş
[email protected]
2006 Güz Dönemi Dağıtık Sistemler Dersi
30/10/2006
Ege Üniversitesi Uluslararası Bilgisayar Enstitüsü
Bornova - İZMİR
İçerik

Uzak Nesne Kavramı

Java RMI Mimarisi

RMI Sisteminin Hazırlanması

Örnek Uygulamalar

Kaynaklar
30/10/2006
Java Remote Method Invocation - Geylani KARDAŞ
2
Uzak Nesne Kavramı

Uzak nesnelerin ortaya çıkma nedeni:




30/10/2006
Nesneye dayalı analiz ve tasarım metodolojilerinin
popülerleşmesi ve
buna dayalı olarak ortaya çıkan nesne tabanlı bilgisayar
yazılımlarının farklı makineler üzerinde haberleşmesi
ihtiyacı
Hedeflenen; farklı makineler üzerinde çalışan
nesnelerin birbirleri ile doğrudan mesajlaşmasını
sağlamaktır.
Yapısal sistemlerde dağıtık süreçler arasında kullanılan
RPC (Remote Procedure Call) mekanizmasına benzer
şekilde standart bilgisayar ağı protokolleri (örneğin
TCP/IP) üzerinden nesnelerin birbirleri ile haberleşmesi
düşünülmüş ve buna dayalı mimariler
gerçekleştirilmiştir.
Java Remote Method Invocation - Geylani KARDAŞ
3
Uzak Nesne Kavramı

CORBA (Common Object Request Broker Architecture):

OMG (Object Management Group) tarafından ortak veri
iletişimi ve servis tanımlamalarının verildiği bir standarttır.

Nesne tabanlı farklı programlama dilleri ile hazırlanmış
olan nesnelerin birbirleri ile iletişimine imkan verir.


Örneğin Java kullanılarak hazırlanmış bir istemci nesnenin
başka bir makinede yer alan ve C++ kullanılarak hazırlanmış
bir sunucu nesneden hizmet alması mümkündür.
Ancak



performansının yavaş olması
karmaşık gerçekleştirimlere ihtiyaç duyması
birlikte işlerlik (interoperability) problemlerinin olması
CORBA’nın dezavantajlarıdır.

30/10/2006
Uzak nesne haberleşmesinde kullanılan Java RMI ise
sadece Java nesnelerinin kullanımı göz önüne
alındığında anlaşılması daha kolay ve kullanımı daha
uygun bir yapıdadır.
Java Remote Method Invocation - Geylani KARDAŞ
4
Java RMI Mimarisi

Java RMI,

Java teknolojisine bağlı dağıtık uygulamaların hazırlanmasına

Uzak Java nesnelerine ait metotların ağ üzerindeki diğer Java
sanal makinelerince uyandırılıp kullanılmasına
olanak sağlar.


Uzak nesneye ait metodun çağırılabilmesi için çağıran
programın ilgili nesnenin ara yüzüne bir referansının
olması gerekir.
RMI, parametrelerin ağ üzerinde belirlenen formatta
gönderilmesi için


kodlanmasında (parameter marshalling) ve
bunların geri elde edilmesinde (parameter unmarshalling)
nesne serileştirmeyi (object serialization)
kullanmaktadır.
30/10/2006
Java Remote Method Invocation - Geylani KARDAŞ
5
Java RMI Mimarisi

30/10/2006
RMI mimarisinde nesnelerin birbirleri ile olan iletişimi ve
parametre kodlama [Hortsmann & Cornell, 2000]
Java Remote Method Invocation - Geylani KARDAŞ
6
Java RMI Mimarisi




30/10/2006
İstemci bir uygulama uzak bir nesnenin metodunu kullanmak
istediğinde “stub” adı verilen vekil bir nesnenin kapsadığı
metodu sıradan bir Java nesnesinin metodunu kullanmak
istermiş gibi çağırmaktadır.
İstemci makinede yer alan “stub”; çağırımda kullanılacak olan
parametreleri bir bayt bloğu olarak hazırlamakta ve
kodlamaktadır.
Parameter Marshalling adı verilen bu kodlama işlemi, verilerin
bir sanal makineden diğer bir sanal makineye belli bir format
altında transferini sağlar.
“Stub” nesnenin hazırladığı blokta, çağırılacak metodun tanımı
ve uzak nesnenin belirteci (identifier) de yer alır.
Java Remote Method Invocation - Geylani KARDAŞ
7
Java RMI Mimarisi

Sunucu tarafında görev yapan alıcı nesne taşıma katmanından
kendisine ulaşan bloğu açar.

Çağrılan nesneyi belirleyerek bu nesnenin ilgili metodunu çağırır.

İşlem sonucunu benzer şekilde kodlayarak oluşan paketi
istemcideki “stub” nesnesine gönderir.

Ağ üzerinde transfer, varsayılan olarak TCP/IP üzerinden
gerçekleşmesine karşın esnek yapıdan dolayı UDP’nin de
kullanılması imkanı vardır.

Bu sürecin karmaşık olduğu ortadadır.

Ancak mimaride bu prosedürler tamamıyla otomatik
işlemektedir

30/10/2006
Uygulama geliştiricilerin yukarıdaki yapılardan çok protokol üzerinde
çalışan sistemleri hazırlama ile uğraşmalarına imkan tanınmaktadır.
Java Remote Method Invocation - Geylani KARDAŞ
8
Java RMI Mimarisi
RMI İsimlendirme Servisi:




30/10/2006
İstemcilerin
uzaktaki
nesnelerin
metotlarını
RMI
ile
çağrılabilmeleri için, söz konusu uzak nesnelere ilişkin
referansları elde etmesi gerekmektedir.
RMI modelinde bu amaca yönelik olarak bir isim sunucu (name
server) kullanılmaktadır.
Uzak nesneler java.rmi.Naming isimli bir sınıfta bulunan
bind() metodunu kullanarak kendilerini İsim Kayıtçısı
(Naming Registry) servisine kaydettirmelidirler.
İstemciler de java.rmi.Naming isimli sınıfın lookup() isimli
metodunu kullanarak uzak nesnelerin hangileri olduğuna bakıp
istenen uzak nesneye bir referans elde edebilmektedir.
Java Remote Method Invocation - Geylani KARDAŞ
9
RMI Sisteminin Hazırlanması

RMI tabanlı bir sistemin oluşturulmasında


öncelikle uzak nesneye ait ara yüzün tasarlanıp hayata geçirilmesi
daha sonra bu ara yüzü uygulayan sınıfın hazırlanması
gerekir.

Bu sınıf rmic adı verilen araca (tool) parametre olarak
verildiğinde gerekli “stub” kodu otomatik olarak hazırlanır.

RPC’ye (Remote Procedure Call); rpcgen’e protokol tanımlama
dosyasının verilmesi ile ilgili “stub” ve iskelet (skeleton) kodlarının
oluşması açısından benzerlik göstermektedir.

Uzak nesneleri türeten RMI sunucusu, isimlendirme kayıtçısına
bu nesneleri bağlar.

İstemci uygulama ise bu kayıtlanmış nesnelerin ara yüzünü
kullanarak uzak metot çağırımını gerçekleştirir.
30/10/2006
Java Remote Method Invocation - Geylani KARDAŞ
10
RMI Sisteminin Hazırlanması


30/10/2006
Nesne
kalıtım
diyagramında
görüldüğü gibi sunucu sınıfının,
java.rmi.server paketinde yer
alan RemoteServer sınıfının bir
uzantısı olması gerekmektedir.
Ancak
soyut
bir
sınıf
olan
RemoteServer’in, sadece sunucu
nesneleri
ile
uzak
“stub”lar
arasındaki iletişim mekanizmasını
tanımlamasından dolayı uzak nesne
çağırımlarında
sunucu
olacak
nesneler, RMI paketi ile gelen ve
RemoteServer sınıfının bir uzantısı
olan UnicastRemoteObject sınıfının
bir uzantısı olarak tasarlanır.
Java Remote Method Invocation - Geylani KARDAŞ
11
Örnek Uygulamalar

Öğrenci Sorgulama

Weather Service [Deitel et al, 2001]
30/10/2006
Java Remote Method Invocation - Geylani KARDAŞ
12
Kaynaklar



30/10/2006
Danny A., Li S., Houle P., Wilcox M., Phillips R.,
Mohseni P., Zeiger
S., Bergsten H., Ferris M.,
Diamond J., Bogovich M., Fleury M., Vedati K.,
Halberstadt A., Patzer A., 1999, Professional Java
Server Programming: with Servlets, JavaServer Pages
(JSP), XML, Enterprise JavaBeans (EJB), JNDI, CORBA,
Jini and Javaspaces, Wrox Press Inc., USA, 1121p
Deitel H. M., Deitel P.J., Santry S.E., 2001,
Advanced Java 2 Platform How to Program, Prentice
Hall, New Jersey – USA, 1875p
Horstmann C. S., Cornell G., 2000, Core Java 2
Volume II - Advanced
Features, Sun Microsystems
Press, California - USA, 920p
Java Remote Method Invocation - Geylani KARDAŞ
13
Teşekkürler
30/10/2006
Java Remote Method Invocation - Geylani KARDAŞ
14
JAVA Remote Method
Invocation (RMI)
Geylani Kardaş
[email protected]
2006 Güz Dönemi Dağıtık Sistemler Dersi
30/10/2006
Ege Üniversitesi Uluslararası Bilgisayar Enstitüsü
Bornova - İZMİR
Download