Nesneyi Somutlaştırmadan Kaydetme – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları
Etkinleştirilebilir Nesneleri Kaydetme
İlk dört satır, etkinleştirilebilir nesnemiz için bir etkinleştirme grubu oluşturmak için gereklidir. Birazdan aktivasyon grupları hakkında daha fazla konuşacağız. Şimdilik bilmeniz gereken tek şey, bu kodun mevcut VM için varsayılan aktivasyon grubunu oluşturduğudur. Bir gruba özel olarak atanmamış herhangi bir uzak nesne bu varsayılan gruba yerleştirilir.
Etkinleştirilebilir nesnenin kendisi, yalnızca genel ActivatableThisOrThatServerImpl yapıcısını çağırarak oluşturulur. Bu yapıcı, daha önce tartıştığımız gibi uygun Etkinleştirilebilir yapıcıyı çağırarak nesneyi etkinleştirme sistemine kaydeder. Nesne için bir aktivasyon grubu belirlemediğimiz için az önce oluşturduğumuz varsayılan gruba yerleştirilir. Bu varsayılan grubu oluşturmamış olsaydık, nesne kaydedildiğinde aktivasyon sistemi burada bir istisna atardı.
Aktivasyon grubunun oluşturulmasının yanı sıra, bu örnek, RMI nesnelerinin kaydedilmesiyle ilgili diğer örneklerimize çok benziyor. Buradaki fark, kayıt işlemi bir noktada sona ererse, etkinleştirme sisteminin, nesne için ActivationDesc’de sağlanan bilgileri kullanarak etkinleştirilebilir nesneyi yeni bir Java VM’sinde yeniden etkinleştirebilmesidir. Bu durumda, nesnemiz için bir ActivationDesc oluşturmak ve kaydetmek için Activatable yapıcısına (ActivatableThisOrThatServerImpl yapıcımız tarafından çağrılır) güveniyoruz.
Bir nesnenin etkinleştirilmesi gerektiğinde, etkinleştirme sistemi önce nesne için ActivationDesc’i arar ve ardından sınıf bayt kodlarını yüklemek için URL’yi kullanarak ActivationDesc’de başvurulan sınıfı arar.
Sınıf yüklendikten sonra, aktivasyon sistemi, argüman olarak bir ActivationID ve bir MarshalledObject alan aktivasyon yapıcısını çağırarak sınıfın bir örneğini oluşturur. ActivationID, aktivasyon sistemi tarafından verilir ve MarshalledObject, ActivationDesc’e önceden kaydedilmiş verileri içerir.
Örnekteki etkinleştirilebilir ThisOrThatServer’ımızda, aktivasyon sistemi ActivatableThisOrThatServerImpl sınıfımızdaki ikinci kurucuyu çağırır. Yeni nesne, ActivationID’yi kaydedilebilmesi için Activatable yapıcısına iletir ve sunucunun adı MarshalledObject’den alınır. Etkinleştirilebilir oluşturucu, nesne için bir ActivationDesc oluşturup kaydetme ve nesneyi etkinleştirme sistemiyle dışa aktarma ile ilgilenir.
Nesneyi Somutlaştırmadan Kaydetme
Uzak bir nesneyi kaydetmenin daha karmaşık, ancak genellikle daha kullanışlı bir yolu, onun için bir ActivationDesc oluşturmak ve ardından nesnenin bir örneğini oluşturmadan bilgileri doğrudan etkinleştirme sistemine kaydetmektir. Statik Activatable.register() yöntemi, bir ActivationDesc nesnesini kabul eder ve onu doğrudan etkinleştirme sistemine kaydeder. İşte bunu nasıl yapabiliriz.
Nesne için ActivationDesc oluşturduğumuzda, nesneyi oluşturmak için kullanılacak sınıfın adını, sınıfı bulmak için bir kod tabanını ve etkinleştirildiğinde nesneye iletilen bir MarshalledObject’i belirtiriz. ActivationDesc, etkinleştirilebilir nesne için bir RemoteStub döndüren Activatable.register() yöntemine yapılan çağrıda kullanılır. Bu saplamanın ThisOrThatServer arabirimini uygulayan bir nesne için olduğunu bildiğimiz için, onu güvenli bir şekilde ThisOrThatServer’a aktarabiliriz.
Burada göstermemiş olmama rağmen, aktivasyon servisine kaydetmeden önce, tıpkı önceki örneğimizde yaptığımız gibi, nesne için bir aktivasyon grubu da oluşturmanız gerektiğini unutmayın. Özetlemek gerekirse, uzaktaki bir nesneyi, aslında nesnenin kendisini oluşturmadan etkinleştirme sistemi ve RMI adlandırma kaydı ile kaydettik.
Bir istemci nesneyi aramaya çalıştığında, sunucuda arkasında hiçbir etkin nesne olmadan uzak bir saplamayı geri alır. Ancak istemci stub üzerinde bir method çağırdığında, sunucudaki aktivasyon sistemi, verdiğimiz ActivationDesc’deki bilgileri kullanarak nesneyi oluşturur.
Marshalled Object ile Veri Aktarma
Argümanları etkinleştirilmeden önce etkinleştirilebilir nesnelere iletebilmenizin yolu, nesne için ActivationDesc içinde bulunan MarshalledObject aracılığıyladır. Ancak, ActivationDesc etkinleştirme sistemine kaydedildikten sonra MarshalledObject’in içeriğini dinamik olarak güncelleyemezsiniz.
Etkinleştirilebilir bir nesneye ilişkin argümanların dinamik olmasını sağlamanın bir yolu, bir dosya adını veya URL’yi MarshalledObject içinde paketlemektir. Nesne etkinleştirildiği noktada dosyadan veya URL’den veri okuyabilir ve bu verileri etkinleştirme sırasında kullanabilir.
java’nın nesneye yönelik özellikleri
java’da tek bir sınıftan maksimum kaç nesne oluşturulabilir?
Java Ders Notları
Java Dersleri
java’nın nesneye yönelik özellikleri arasında yer almaz?
Java Dersleri PDF
Java E-kitap
Java Nesne YÖNELİMLİ PROGRAMLAMA PDF
Aktivasyon Grupları
Her etkinleştirilebilir RMI nesnesi bir etkinleştirme grubuna aittir. Her bir etkinleştirilebilir nesne grubu, sunucu ana bilgisayarında aynı Java VM içinde çalışır. Özünde, etkinleştirme grupları, aynı fiziksel adres alanını paylaşması gereken etkinleştirilebilir uzak nesnelerin koleksiyonlarını tanımlamanın bir yoludur.
Etkinleştirilebilir nesnemizi etkinleştirme sistemine kaydetmeden önce bunu yapmamız gerektiğinden, bir etkinleştirme grubunun nasıl kurulacağını zaten gördük. Bu bölümde, aktivasyon grupları oluşturmaya biraz daha ayrıntılı olarak göz atacağız ve aktivasyon grubunun sizin için gerçekte ne yaptığını tartışacağız.
RMI’daki etkinleştirme grupları, uzak nesneleri düzenlemenin bir yolundan daha fazlasıdır. Her etkinleştirme grubu, içerdiği nesneleri izlemekten, etkinleştirmekten ve yeniden etkinleştirmekten sorumludur. Bir etkinleştirme grubunun bakımına dahil olan nesneler gösterilir.
Normalde alttaki nesnelerle etkileşime girmeniz gerekmediğini unutmayın. AktivasyonGroupnesnelerinizi kurmanız ve onlara etkinleştirilebilir nesneler atamanız yeterlidir; aktivasyon sistemi gerisini sizin için halleder.
Gruptaki ilk nesnenin etkinleştirilmesi gerektiğinde bir ActivationGroup oluşturulur. Etkinleştirici, ActivationGroup’un çalışması için bir VM oluşturmaktan ve varsa, kayıtlı nesnenin ActivationGroupDesc’indeki bilgileri kullanarak ActivationGroup’u başlatmaktan sorumludur.
Uzak nesnenin belirtilen bir grubu yoksa, varsayılan bir grup oluşturulur. Ardından, yeni ActivationGroup nesnesine, newInstance() yöntemini çağırarak istenen uzak nesneyi etkinleştirmesi söylenir. Aktivatörün bu yönteme ilettiği argümanlar, yeni nesne için ActivationID ve Aktivatörün nesne için kaydettiği ActivationDesc’dir.
ActivationDesc, uzak nesneyi etkinleştirmek için ihtiyaç duyduğu her şeyi bir ActivationGroup’a verir. ActivationGroup, nesnenin sınıf adını alır ve sınıf bayt kodlarını arar. İlk önce yerel CLASSPATH’i kontrol eder ve bu hiçbir şey göstermezse, sınıfı verilen URL’den yüklemek için ActivationDesc’deki URL’yi kullanır.
Sınıf yüklendikten sonra, sınıfta etkinleştirme oluşturucusu çağrılarak sınıfın bir örneği oluşturulur (örneğin, bir ActivationID bağımsız değişkenine ve bir MarshalledObject bağımsız değişkenine sahip olan yapıcı). ActivationID ve MarshalledObject, newInstance() yöntemine yapılan çağrıdan gelir.
Yeni, aktif uzak nesne, Aktivatöre serileştirilmiş bir MarshalledObject olarak döndürülür. Bu iki nedenden dolayı yapılır. İlk olarak, Aktivatör ayrı bir Java VM’de çalışır, bu nedenle aktif nesne referansının bir VM’den diğerine aktarılması gerekir ve bunu yapmanın en kolay yolu onu seri hale getirmek ve bu formda iletmektir.
İkincisi, nesne bir MarshalledObject içinde paketlendiğinden, Aktivatörün kesinlikle gerekli olmadıkça nesnenin bayt kodlarını yüklemesine gerek yoktur. Çoğu durumda, Aktivatörün nesnenin kendisiyle doğrudan etkileşime girmesine gerek yoktur, bu nedenle gereksiz bayt kodlarını yüklemek için zaman harcamasına gerek yoktur.
Her ActivationGroup, kendisiyle ilişkilendirilmiş bir ActivationMonitor’a sahiptir. ActivationGroup, bir nesne etkin veya etkin olmadığında ActivationMonitor’a bunu bildirmelidir. Etkinleştirilebilir bir nesne, etkin ve etkin olmadığında, sırasıyla grubun activeObject() ve inactiveObject() yöntemlerini çağırarak ActivationGroup’u bilgilendirmekten sorumludur.
ActivationGroup, sırayla, monitör nesnesinde aynı yöntemleri çağırarak bilgileri ActivationMonitor’a iletir. Nesne etkin olmadığında, ActivationMonitor bunu not eder ve nesne için bir sonraki yöntem isteği geldiğinde nesnenin yeniden etkinleştirilmesini düzenler.
Bir ActivationGroup’un tamamı devre dışı kalırsa, ActivationMonitor, inactiveGroup() yöntemi aracılığıyla bilgilendirilir. Bu gruptaki bir nesne için sonraki istek, Aktivatörün grubu yeniden oluşturmasına neden olur.
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)