Asenkron Java Rmı
Asenkron Java Rmı
Dosyalar
Tarih
2009-06-30
Yazarlar
Akın, Orhan
Süreli Yayın başlığı
Süreli Yayın ISSN
Cilt Başlığı
Yayınevi
Fen Bilimleri Enstitüsü
Institute of Science and Technology
Institute of Science and Technology
Özet
Senkron çalışan Java RMI’ın senkron çağrı modeli uzun zaman alan uzak yordam çağrıları için ölçeklenebilirlik sorunları yaratmaktadır. Asenkron çağrılar sayesinde, istemci çağrıyı yürüttükten sonra sunucu çağrıyı işlerken gereksiz yere beklemez ve çalışmasına devam edebilmektedir. Bu çalışmada java uzak yordam çağırma yöntemleri üstüne asenkron olarak uzak yordam çağırmamızı sağlayacak bir yazılım çatısının tanımını yapıp gerçeklemesini anlatacağız. Dışarıdan bakacak olursak, java programlama dili ile yazılmış, çoğu zaman farklı fiziksel yerlerde bulunan farklı sanal makineler üzerinde yaşayan ve birbirleri ile RMI ile haberleşen istemci ve sunucu programlar bulunmaktadır. Konu üzerinde asenkronluk özelliğin eklenmesi için yapılmış önceki çalışmalara bakacak olursak; benimsenen yöntemler istemci vekilin ön işlemden geçirilmesi, uzak nesnelerin veya uzak nesne vekillerinin değiştrilmesi ya da Sun’ın Java Sanal Makinesi’nin değiştirilmesi gibi pek de kolay olmayan çalışmalar gerektirmektedirler. Bu çalışmada Java’nın iplik havuzu ve yansıtma gibi becerilerinden yararlanarak, kendi uzak yordam çağırma kütüphanesinin üstüne asenkron uzak yordam çağırma yazılım çatısı gerçeklemekteyiz. Çalışmamız Java dışında farklı bir araç, ön işleme, özel derleyici gerektirmemesi, hali hazırda geliştirilmiş olan eski uzak nesnelerde değişikliğe gerek duymayıp onlarla sorunsuz entegre çalışabilmesi açışından önceki çalışmalara göre farklılık göstermektedir. Asenkron yazılım çatısının kullanımı gerçek dünya problemlerinin çözümünde ne şekilde kullanıldığı, açık kod örnekleriyle verilmektedir. Java’nın standart uzak yordam çağırma yöntemine göre nasıl kazanç sağladığımız açıkça ortaya konup, java çok iplikli programlama ve yansıtma yöntemlerinin performans kazanmak için optimize edilme yöntemleri karşılaştırmalar ve sonuçlarla ortaya konmaktadır.
Java RMI’s synchronous invocation model may cause scalability challenges when long duration invocations are targeted. An asynchronous invocation allows the client to continue with its computation after dispatching a call, thus eliminating the need to wait idle while its request is being process by a remote server. In this study we define and implement an execution framework which extends Java RMI functionality with asynchrony. From out of the box point of view, there is a java client program and a server program both written in java programming language and living in different virtual machines that can be in different physical locations and using Java’s RMI (Remote Method Invocation) technology to communicate. Considering previous work carried on this topic to achieve asynchrony on Java’s RMI special preprocessing of the client stub, modification of the remote objects or stubs or modification of the Sun’s Java VM (virtual machine) is required which is not straight forward since Sun does not provide built-in mechanisms for those operations. In this study, we implemented an asynchronous RMI execution framework on the top of RMI technology, using the thread pooling capability and the reflection mechanism of Java. It differs from previous work as it does not require any external tool, preprocessor, or compiler and it may be integrated with previously developed software as no modification of target remote objects is necessary. Brief code examples with real life problems will be given with the usage of the asynchronous RMI framework, obvious performance gain over standard RMI calls will be shown and the techniques which were used to optimize Java’s multithreading and reflection in this study will be explained briefly with comparisons and results.
Java RMI’s synchronous invocation model may cause scalability challenges when long duration invocations are targeted. An asynchronous invocation allows the client to continue with its computation after dispatching a call, thus eliminating the need to wait idle while its request is being process by a remote server. In this study we define and implement an execution framework which extends Java RMI functionality with asynchrony. From out of the box point of view, there is a java client program and a server program both written in java programming language and living in different virtual machines that can be in different physical locations and using Java’s RMI (Remote Method Invocation) technology to communicate. Considering previous work carried on this topic to achieve asynchrony on Java’s RMI special preprocessing of the client stub, modification of the remote objects or stubs or modification of the Sun’s Java VM (virtual machine) is required which is not straight forward since Sun does not provide built-in mechanisms for those operations. In this study, we implemented an asynchronous RMI execution framework on the top of RMI technology, using the thread pooling capability and the reflection mechanism of Java. It differs from previous work as it does not require any external tool, preprocessor, or compiler and it may be integrated with previously developed software as no modification of target remote objects is necessary. Brief code examples with real life problems will be given with the usage of the asynchronous RMI framework, obvious performance gain over standard RMI calls will be shown and the techniques which were used to optimize Java’s multithreading and reflection in this study will be explained briefly with comparisons and results.
Açıklama
Tez (Yüksek Lisans) -- İstanbul Teknik Üniversitesi, Fen Bilimleri Enstitüsü, 2009
Thesis (M.Sc.) -- İstanbul Technical University, Institute of Science and Technology, 2009
Thesis (M.Sc.) -- İstanbul Technical University, Institute of Science and Technology, 2009
Anahtar kelimeler
java RMI,
uzak yordam çağırma,
asenkron haberleşme,
yansıtma,
java RMI,
remote method call,
asynhronous communication,
reflection