Uzak Nesne Aktivasyonu – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları
Sınıf Yükleme
Sınıfları uzaktan yüklemesine izin vermek için bir RMI istemcisini çalıştırmak için özetlediğim hemen hemen tüm adımlar, uygulamalar için de geçerlidir. Tek fark, uygulamacıklar için sınıfların, uygulamayı çalıştırmak için gereken sınıflar için uygulamanın kod tabanını kontrol eden bir AppletClassLoader kullanılarak yüklenmesidir.
Applet’ler için varsayılan güvenlik politikası, sınıfların uzaktan yüklenmesine zaten izin verir, çünkü bir applet ilk etapta bu şekilde çalışır, dolayısıyla bir uygulama içinde RMI kullanırken güvenlik politikasını değiştirmeye gerek yoktur. Uygulamanın RMI nesnesi için uzak arabirimi ve saplama sınıfını bulmasını sağlamak için yapmanız gereken tek şey, bunları uygulamanın kod tabanına karşılık gelen sunucu dizinine koymaktır.
Uzak Nesne Aktivasyonu
Uzak nesnelerin otomatik etkinleştirilmesi, Java 1.2’den itibaren RMI’da yeni bir özelliktir. RMI’daki etkinleştirme alt sistemi size iki temel özellik sağlar: istemci istekleriyle istek üzerine uzak nesnelerin somutlaştırılması (etkinleştirilmesi) yeteneği ve uzak nesne referanslarının sunucu çökmelerinde geçerli kalarak referansları kalıcı hale getirme yeteneği. Bu özellikler, belirli dağıtılmış uygulama türlerinde oldukça yararlı olabilir.
Örneğin, fabrika nesneleri hakkında konuştuğumuzda tartıştığımız AccountManager sınıfını düşünün. AccountManager’ı sunucumuzda günün 24 saati çalışır durumda tutmak istemeyebiliriz; belki de çok sayıda sunucu kaynağı (bellek, veritabanı bağlantıları vb.) tüketir, bu nedenle kullanılmadığı sürece çalışmasını istemiyoruz.
RMI etkinleştirme hizmetini kullanarak AccountManager’ı, ilk müşteri bir Hesap talep edene kadar çalışmaya başlamaması için ayarlayabiliriz. Ek olarak, belirli bir süre işlem yapılmadığında, sunucu kaynaklarını korumak için AccountManager’ı kapatabilir ve ardından bir müşteri bir sonraki Hesap istediğinde yeniden etkinleştirebiliriz.
Uzak bir nesne etkinleştirilebilir yapılırsa, fiilen somutlaştırılmadan RMI kayıt defterine kaydedilebilir. Normalde, RMI uzak nesneleri (UnicastRemoteObject arabirimini temel alır) kendilerine yalnızca kalıcı olmayan başvurular sağlar.
Bu tür bir başvuru, yalnızca başvurulan nesne uzak bir Java VM’sinde zaten mevcutsa, bir istemci için oluşturulabilir. Ayrıca, uzak başvuru yalnızca uzak nesnenin ömrü boyunca geçerlidir.
Uzak nesne etkinleştirme hizmeti, istek sırasında uzak nesne çalışmıyor olsa bile oluşturulabilen ve tek bir sunucu nesnesinin ömrü boyunca devam edebilen kalıcı uzak referanslar için destek ekler.
RMI etkinleştirme hizmeti tarafından sağlanan temel özellikler şunları içerir:
- Bu nesnelere başvuru istekleri tarafından tetiklenen uzak nesneleri otomatik olarak oluşturma yeteneği.
- Etkinleştirilebilir uzak nesne gruplarının aynı Java sanal makinesinde yürütüldüğü ve gerekirse etkinleştirme hizmeti tarafından otomatik olarak başlatıldığı etkinleştirme grupları desteği.
- Bir tür sistem arızası nedeniyle çıkarlarsa veya yok edilirlerse uzaktaki nesneleri yeniden başlatma yeteneği. Bu, RMI uygulamalarına belirli bir derecede hata toleransı ekleyebilir.
RMI etkinleştirme sisteminde etkinleştirilebilir nesneler, etkinleştirme gruplarına aittir ve her etkinleştirme grubu kendi Java VM’sinde çalışır. Etkinleştirilebilir nesnelerinizi gruplandırmazsanız, oluşturduğunuz her etkinleştirilebilir nesneye yeni bir etkinleştirme grubu atamanız yeterlidir, ardından her nesne ayrı bir Java VM içinde çalışır.
Görüntü işleme ile nesne tanıma
Python OpenCV nesne tanıma
Telekinezi nasıl Yapılır
Derin Öğrenme ile nesne tespiti
Gerçek zamanlı nesne tespiti
Nesne tanıma algoritmaları
Python ile nesne tanıma
Herkes telekinezi yapabilir mi
Genellikle etkinleştirilebilir bir uzak nesneyi şu şekilde tanımlarsınız:
- Uzak nesne uygulamanızı, içinde sağlanan Etkinleştirilebilir sınıftan alt sınıflama.
- Sunucu uygulamasında etkinleştirme oluşturucuları sağlama
- Etkinleştirme hizmeti ile nesnenin ve etkinleştirme yönteminin kaydedilmesi
Uzak istemcilerin etkinleştirilebilir nesnenize doğrudan erişmesini istiyorsanız, ağ üzerinde adıyla bulunabilmesi için nesneyi RMI kayıt defterine de kaydetmeniz gerekir. Birazdan göreceğimiz gibi, uzak nesnenin bir örneğini gerçekten oluşturmadan, etkinleştirilebilir bir sınıfı kayıt defterine kaydedebilirsiniz.
Activatableclass’ı alt sınıflamadan da etkinleştirilebilir bir nesne oluşturabilirsiniz. Bu, başka bir sınıfı genişletmeniz gerekiyorsa gerekli olabilir ve Java tek devralma sınırı, Activatable’ı da genişletmenizi engeller. Bu bölümün çoğu için, Activatable’ı alt sınıflandırdığınız durumu tartışacağız; Bu diğer yaklaşımdan yalnızca gerektiğinde bahsedeceğim.
Kalıcı Uzak Referanslar
Etkinleştirilebilen bir uzak nesne ile etkinleştirilemeyen bir nesne arasındaki temel fark, etkinleştirilebilir bir nesneye yapılan uzaktan başvurunun arkasında “canlı” bir nesneye ihtiyaç duymamasıdır. Etkinleştirilebilir bir nesne çalışmıyorsa (örneğin, henüz oluşturulmamışsa veya Java VM’si tarafından çöp toplanmışsa veya VM’sinden çıkılmışsa), nesneye bir uzak referans yine de bir istemciye dışa aktarılabilir.
İstemci, her zamanki gibi bir saplama alır ve saplama aracılığıyla uzak yöntem çağrıları yapabilir. İlk metot çağrıldığında sunucu üzerinde çalışan aktivasyon servisi nesnenin aktif olmadığını görür ve istemci için nesneyi aktifleştirmeye başlar. Nesnenin çalıştırılacak bir VM’si yoksa, etkinleştirme sistemi bir tane başlatır.
Nesne daha sonra aktivasyon sistemine kayıtlı olan bilgiler kullanılarak etkinleştirilir. Bu bilgiler, nesnenin sınıf adını, yerel CLASSPATH içinde bulunmazlarsa sınıf bayt kodlarını yükleyebilecek bir URL’yi ve nesnenin etkinleştirme oluşturucusuna aktarılacak verileri içerir. Nesne etkinleştirildikten sonra, yöntem çağırma gerçekleşir ve sonuçlar sıralanır ve istemciye geri gönderilir.
Nesne çalışmaya devam ettiği sürece, gelecekteki yöntem istekleri her zamanki gibi işlenir. Nesne herhangi bir nedenle çalışmayı durdurursa (örneğin, çöp toplanır veya VM’si ölür), sonraki yöntem isteği etkinleştirme hizmetini yeniden tetikler ve nesne yeniden etkinleştirilir. Kalıcı uzak referanslarla kastedilen budur: etkinleştirilebilir nesnelere yapılan uzak referanslar, gerçek sunucu nesnesinin birden çok ömrü boyunca devam edebilir.
Etkinleştirilebilir Uzak Nesne Tanımlama
Doğal olarak, etkinleştirilebilir bir nesneyi RMI etkinleştirme sistemine kaydetmeden ve kullanmadan önce, nesne için uzak arabirimi ve sunucu uygulamasını tanımlamanız gerekir. Java.rmi.activation paketi, etkinleştirilebilir bir uzak nesne tanımlamanız için ihtiyaç duyduğunuz sınıfları sağlar. Genellikle, bir uzak nesneyi Etkinleştirilebilir öğesinden alt sınıflara ayırarak ve nesneyi etkinleştiren özel bir oluşturucu tanımlayarak etkinleştirilebilir olarak tanımlarsınız. Ayrıca nesneyi sunucu ana bilgisayarındaki etkinleştirme hizmetine kaydetmeniz gerekir.
Bunun dışında, etkinleştirilebilir bir uzak nesnenin uygulanması, etkinleştirilemeyen bir nesnenin uygulanmasına benzer. Nesnenizden dışa aktarmak istediğiniz yöntemleri içeren bir uzak arabirimle başlarsınız. Arabirim Remote’u genişletmeli ve her yöntem bir RemoteException (veya Java 1.2’den itibaren RemoteException’ın herhangi bir üst öğesi) oluşturmalıdır.
Sunucu uygulaması bu arabirimi uygular ve java.rmi.server.RemoteServer sınıfının somut bir uygulamasını genişletir. Etkinleştirilebilir bir uzak nesne tanımladığınız için, genellikle Java.rmi.aktivasyonunu genişletirsiniz.
Doğrudan etkinleştirilebilir ve oluşturucularını uzak nesnenizi başlatmak, kaydetmek ve etkinleştirmek için kullanın. Activatable’ı doğrudan genişletmemeyi seçerseniz, nesnenizi aktivasyon çalışma zamanı sistemine kaydetmek için Activatable sınıfındaki statik exportObject() yöntemlerini kullanmanız gerekir.
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)