Sunucuları Yapılandırma – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları
Dinamik Olarak Yüklenen Sınıflar
RMI çalışma zamanı sistemi, uzak yöntem çağrılarını yürütürken ihtiyaç duyduğu sınıfları yükleyen dinamik bir sınıf yükleme özelliğine sahiptir. Bazı durumlarda, uygulama sınıflarınızın bir RMI uygulamasındaki çeşitli aracılar tarafından nasıl elde edildiği konusunda fazla endişelenmenize gerek yoktur.
Bu, özellikle dağıtılmış sistemde yer alan tüm ana bilgisayarlara doğrudan erişiminiz varsa (yani, uygulamaya katılan her makine için uygulama sınıflarınızı yerel CLASSPATH’e yükleyebiliyorsanız) geçerlidir. Örneğin, önceki Hesap örneğini tartışırken, ilgili tüm sınıfların (Account, AccountImpl, saplama ve iskelet sınıfları) hem istemcide hem de sunucuda kurulu olduğunu varsaydım.
Bununla birlikte, dağıtılmış uygulamanız, doğrudan kontrolünüz altında olmayan ana bilgisayarlarda çalışan uzak aracıları içeriyorsa, RMI’nin çalışma zamanında sınıfları nasıl yüklediğini anlamanız gerekir, böylece her uzak aracının çalışması için ihtiyaç duyduğu sınıfları bulmasını sağlayabilirsiniz.
Herhangi bir Java uygulamasında olduğu gibi, Java çalışma zamanı sistemi, bir RMI oturumunu başlatmak için gereken sınıfların yüklenmesinden sorumludur. Uzak bir nesneyle etkileşim başlatmak, uzak nesne için temel arabirimin ve uzak arabirim için saplama sınıfının yanı sıra RMI API sınıflarının kendilerinin yüklenmesi anlamına gelir. Sunucu tarafında, uzaktan dışa aktarılan sunucu nesnesini çalıştırmak için uzak nesne için iskelet sınıfının ve gerçek uygulama sınıfının yüklenmesi gerekir.
Belirli bir Java sınıfı tarafından doğrudan başvurulan sınıflar, normalde sınıfın kendisini yükleyen aynı sınıf yükleyici tarafından yüklenir. Bu nedenle, uzak bir nesneyi bulmak için Adlandırma araması yapan bir RMI istemcisinde, uzak nesnenin saplama arabirimi, aramayı yapan sınıfın sınıf yükleyicisi kullanılarak yüklenir.
RMI istemcisi bir Java uygulamasıysa (bir nesnede main() yöntemini çağırmak için Java komutunu kullanmaya başladıysa), varsayılan (yerel) sınıf yükleyici, yerel CLASSPATH’den uzak arabirimi yerel olarak bulmaya çalışır. RMI istemcisi bir web sayfasına yüklenmiş bir uygulamaysa, AppletClassLoader, uygulamanın kod tabanında, uygulamanın ana bilgisayarında uzak arabirimi aramaya çalışır.
RMI çalışma zamanı sistemi, az önce tanımladığım varsayılan sınıf yükleme sürecini genişletmek için kendi sınıf yükleyicisi olan RMIClassLoader’ı sağlar. RMIClassLoader, uzak arabirimler için saplamalar ve iskelet sınıflarının yanı sıra uzak yöntem bağımsız değişkenleri veya dönüş değerleri olarak kullanılan nesne sınıflarını yükler.
Bu sınıflara genellikle RMI uygulamanızın kendisi tarafından açıkça başvurulmaz, ancak RMI çalışma zamanı sistemi tarafından uzak başvurular ve sıralama/düzeltme yöntemi bağımsız değişkenleri ve dönüş değerleri oluşturmak için gereklidir.
Sınıf tanımları için bayt kodlarını yüklerken, RMI çalışma zamanı sistemi önce yerel bağlam için varsayılan sınıf yükleyiciyi (yani, bir uygulamacık için bir AppletClassLoader veya bir Java uygulaması için sistem sınıfı yükleyicisini) kullanmaya çalışır. Başvurulan sınıf, varsayılan yerel sınıf yükleyici kullanılarak bulunamazsa, RMIClassLoader, aşağıda açıklanan prosedürlere göre sınıf bayt kodlarını uzaktan yüklemeye çalışır.
Sunucu Kurulumu nasıl yapılır
Microsoft Web Deploy nedir
IIS kurulumu
İis 10.0 Express Nedir
Windows Server
Windows 11 IIS kurulumu
Web Server Kurulumu
Server Manager kurulumu
Uzak Sınıf Yükleme için İstemcileri ve Sunucuları Yapılandırma
RMI çalışma zamanı sistemi bir uzak nesne saplamayı, yöntem bağımsız değişkenini veya dönüş değerini sıraya koyduğunda, sıralanan bayt akışındaki bir URL’yi kodlayarak akışın alıcı ucundaki işleme, sıralanan nesne için sınıf dosyasını nerede arayacağını bildirir.
Sıralanan nesnenin sınıfı, varsayılan olmayan bir sınıf yükleyici (örneğin, AppletClassLoader veya RMIClassLoader) tarafından yüklendiyse, bu sınıf yükleyicinin kod tabanı, sıralanan akışta kodlanır. Sınıf, yerel CLASSPATH’den varsayılan sınıf yükleyici tarafından yüklendiyse, nesneyi sıralayan Java VM için java.rmi.server.codebase özelliğinin değeri akışta gönderilir.
Bu özellik Java VM’de varsayılan olarak ayarlanmamıştır, bu nedenle gerekli sınıf dosyalarının konumunu gösteren bir URL’ye ayarlandığından emin olmanız gerekir. Bunu yapmanın bir yolu, Java VM’yi başlatırken olduğu gibi bir komut satırı argümanı eklemektir.
Burada kod tabanıyla bir Java işlemi başlatıyoruz. Bu, bir RMI oturumu sırasında bu süreçten alınan nesneler için sınıfları yüklemesi gereken herhangi bir uzak işlemin onları bulmak için bu HTTP URL’sini kullanması gerektiği anlamına gelir (eğer sınıflar yerel CLASSPATH’de bulunamıyorsa).
Bu, ya RMIProcess bir RMI kayıt defteri aracılığıyla uzak nesnelere hizmet veriyorsa ya da RMIProcess nesneleri diğer uzak nesneler üzerinde çağırdığı yöntemlere aktarıyorsa geçerlidir. İlk durumda, RMIProcess tarafından dışa aktarılan nesneler için saplama sınıflarını yüklemesi gereken bir uzak istemci, bu sınıfları bulmak için kod tabanını kullanır. İkinci durumda, bir uzak işlem, RMIProcess’in yaptığı uzak yöntem çağrılarına ilettiği yöntem bağımsız değişkenleri için sınıfları yüklemek için kod tabanını kullanır.
Bir RMI çalışma zamanı sistemi bir nesne saplamasını, yöntem argümanını veya dönüş değerini bozmaya çalışıyorsa ve varsayılan sınıf yükleyiciyi (örneğin, önce yerel CLASSPATH’e bakan sistem sınıfı yükleyicisi) kullanarak sınıfı bulamazsa, RMIClassLoader, sınıf bayt kodlarını uzaktan aramak için marshal akışındaki URL’yi kullanabilir.
RMIClassLoader, sıralanmış bayt akışından URL’yi alır ve gerekli sınıfları yüklemek için belirtilen ana bilgisayara bir URL bağlantısı açar. Hem yerel sınıf araması hem de bu uzak URL araması gerekli sınıfları bulamazsa, sıralı olmayan işlem bir istisna oluşturur ve uzak yöntem çağrısı başarısız olur.
Bir Java çalışma zamanı sisteminin sınıfları uzaktan yüklemeyi bile denemesi için, uzaktan sınıf yüklemeye izin veren bir güvenlik yöneticisinin kurulu olması gerektiğini unutmayın. Bunun için java.rmi.RMISecurityManager kullanılabilir. Hem RMI nesne sunucunuzda hem de istemcilerinizde, herhangi bir RMI çağrısından önce aşağıdaki satırı ekleyin.
Güvenlik yöneticisini ayarlamazsanız, Java VM’nin sınıfları yalnızca yerel olarak aramasına izin verilir ve RMI çağrılarınız yalnızca gerekli tüm sınıflar yerel CLASSPATH’de bulunabilirse çalışır.
Uzak sınıfların dinamik olarak yüklenmesiyle ilgili başka bir sorun da, varsayılan Java güvenlik ilkesinin, uzak bir ana bilgisayardan bir sınıfı çözümlemek için gereken tüm ağ işlemlerine izin vermemesidir.
Bu nedenle, sınıfları uzaktan çözmesi gereken bir RMI istemciniz veya sunucunuz varsa, buna izin vermek için ağ izinlerini açan bir ilke dosyası kullanmanız gerekir. Burada ağ ilkelerinin ayrıntılarına veya güvenlik ilkesi dosyasının sözdizimine girmeyeceğim, ancak RMI istemcisindeki ilke dosyasına aşağıdaki satırı eklemeniz gerekecektir.
Bu satır, RMI nesne sunucusu objhost.org’a yerel makineye bağlantı açma izni verir. Bu, RMISecurityManager tarafından dayatılan daha katı kuralları atlamak için gereklidir. Değiştirilmiş bir ilke dosyası oluşturduktan sonra, kod tabanı özelliğini ayarlamaya benzer şekilde, RMI işleminizi başlattığınızda komut satırında bunu belirtebilirsiniz.
Basit bir örnek olarak, bir ana bilgisayarda bir Hesap nesnesini dışa aktarmak ve bu Hesaba yerel olarak kullanılabilen tek sınıfın Hesap arabirimi sınıfının kendisi olduğu başka bir ana bilgisayarda erişmek için önceki Hesap örneğimizi kullanmak istediğimizi varsayalım.
Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır.
1) Backlink Paketi 50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)