Java RMI & CORBA 2007-2009. Java RMI & CORBA2 Зміст J2EE. Підтримка CORBA. –Технологія Java IDL. –Технологія Java RMI/IIOP Сумісність RMI/IIOP - та CORBA-проектів.

Slides:



Advertisements
Similar presentations
Java IDL Callback Object. interface Listener { void message(in string msg); }; interface MessageServer { void register(in Listener lt); };
Advertisements

Патерн (принцип) IOC&DI IoC2 Spring Framework.
Розробка Web-проектів із використанням Spring Framework 2008 (Курс “Інформаційні технології”)
АТ Інститут Інформаційних Технологій Комплекс засобів криптографічного захисту інформації на платформі IBM Lotus Заступник головного конструктора Горбенко.
Патерн (принцип) IOC&DI 2010 (Курс “Інформаційні технології”)
Introduction to Java 2 Enterprise Edition About myself –Neutrinos, Cancer Research, IT Applications Today’s topic: J2EE –Context –Advantages –Components.
OCT 1 Master of Information System Management Organizational Communications and Distributed Object Technologies Lecture 11: CORBA.
Про конкурс HTC Android Developers Contest перший конкурс для Android-розробників в Україні; мета: пітримати розробку нових Android додатків для українського.
Multimedia Presentation "What Is a Computer?"
Кротова І.В., методист Центру аналізу та прогнозування розвитку освіти Всеукраїнська українознавча гра «Соняшник»
Автоматизоване розроблення веб-сайтів.
Електронна пошта – сервіс
М УЛЬТИМЕДІЙНІ ПРЕЗЕНТАЦІЇ Мультимедійні технології С ТВОРЕННЯ КЛІПІВ.
Інформатика 9 клас Навчальна презентація вчителя Белеванцевої О.М. ХЛ №89 м. Харків.
Пилипенко Олена Володимирівна,
ОПЕРАЦІЙНА СИСТЕМА Windows 
Створення та форматування інформаційного вмісту презентації
Створення макросів в автоматичному режимі
Шаблони документів і робота з ними
Впровадження нового Державного стандарту
Словник пояснення конкретного слова переклад з однієї мови на іншу.
Вбудовування та зв’язування файлів. Веб-публікація документів
Робота з Windows Файл, папка.
Copyright (c) Qusay H. Mahmoud 1 Java CORBA Distributed Objects CORBA: Introduction and Overview CORBA Clients CORBA Servers CORBA Development Issues JavaIDL:
Створення й оформлення блогу
Електронні таблиці MS Excel.
Повідомлення на тему: Методи астрономічних спостережень Робота
Сходинки до інформатики. 2 клас за новою державною програмою
By Dr. Jiang B. Liu 11. Java IDL and CORBA  Generic ORB Core  idltojava development tool  CORBA Object Service (COS) name service - nameserv  Java.
CORBA Chapter 17 Coulouris text. Today’s Topics CORBA History and goals CORBA RMI CORBA services The Distributed Whiteboard Revisited.
Google App Engine for Java Google App Engine2 Google App Engine (GAE) – це інфраструктура хмарних обчислень, яка орієнтована на підтримку веб-додатків.
Distributed Objects and Remote Invocation: RMI and CORBA Most concepts are drawn from Chapter 17 © Pearson Education Rajkumar Buyya, Xingchen Chu, Rodrigo.
Платформа Microsoft Azure 2014 (До 2014 року платформа мала назву Windows Azure)
From Coulouris, Dollimore, Kindberg and Blair Distributed Systems: Concepts and Design Edition 5, © Addison-Wesley 2012 Slides for Chapter 8: Distributed.
Slide 1 CORBA Programming: Presentation of a simple “Hello World” CORBA client and server application ITONK1.
Web MVC фреймворки WebWork та Struts (Курс “Інформаційні технології”)
Ant Ant2 Призначення: виконання повторюваних, як правило, рутинних завдань, пов'язаних із розробкою, розгортанням, виконанням проектів. Приклади.
CORBA – Command Line CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
RMI-IIOP.  RMI-IIOP combines RMI-style ease of use with CORBA cross-language interoperability  Java™ Remote Method Invocation (RMI) provides a simple.
MSc Course in Advanced Distributed Systems Session 2.2: Practical CORBA Programming
1 Lecture 11 George Koutsogiannakis / Summer 2011 CS441 CURRENT TOPICS IN PROGRAMMING LANGUAGES.
Presentation: RMI Continued 2 Using The Registry & Callbacks.
CORBA Details Three Tier Architecture CORBA API Holders and Helpers COS Naming and Naming Contexts Transient and Persistent Objects Properties Callbacks.
Vakgroep Informatietechnologie - IBCN CORBA & RMI Design of Distributed Software.
До використання COM- об’єктів у Visual Studio (C#)
Розробка Web-проектів із використанням Struts Framework 2008.
Slide 1 Objektorienteret Netværkskommunikation CORBA Introduction.
CORBA – Eclipse CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
CORBA_1/001 Department of Computer Science Southern Illinois University Edwardsville Spring, 2010 Dr. Hiroshi Fujinoki CORBA:
Web-framework Tapestry 2008 (Курс “Інформаційні технології”)
Google Web Toolkit (GWT). AJAX-додатки
Google Web Toolkit (GWT). AJAX-додатки
1 CORBA. 2 What options do I have for distributed application development using java? 1.RMI-IIOP is for developers who program in the Java programming.
Remote Method Invocation with Java-RMI
1 Naming Service. 2 Naming service The CORBA COS (Common Object Services) Naming Service provides a tree- like directory for object references –It is.
Навчальний елемент Робота з меню у програмі Windows'95 Назва: Оператор комп’ютерного набору Професія: UA002 Код:
Списки типів Нікітін Олексій. Навіщо потрібні списки типів? Розглянемо шаблон Abstract Factory. class WidgetFactory { public: virtual Window* createWindow()
Slide 1 of 15 © Ingeniørhøjskolen i Århus CORBA Programming: Presentation of a simple “Hello World” CORBA client and server application.
1 callback. 2 Client programs often react to changes or updates that occur in a server. For example, a client graph or spreadsheet program might need.
IDL Models The Inheritance Model: Using the Inheritance Model, you implement the IDL interface using an implementation class that also extends the compiler-generated.
Object Oriented Middleware (OOMI) Presentation: Locating Distributed Objects - A presentation of the Interoperable Naming Service & Sun’s Java ORB/ Orbacus.
Технологія виконання швів «козлик» та «оксамитовий»
Object-Oriented Middleware (OOMI) Locating Distributed Objects Emmerich – Chapter
1 ЕКОЛОГІЧНИЙ МОНІТОРИНГ СТАНУ ГРУНТОВИХ ВОД В УРБОЕКОСИСТЕМІ.
CORBA Barış COŞKUN Çağatay DİKİCİ. INTRODUCTION Computer networks are heterogenous In 1989 OMG(Object Management Group) was formed to address the problems.
Паралелепіпед Геометрія. Зібратися разом – це початок. Триматися разом – це прогрес. Працювати разом – це успіх. Г. Форд.
Presentation 13: RMI continued – more advanced issues: Activation & RMI over IIOP.
АВТОМАТИЗОВАНИЙ ЕЛЕКТРОПРИВОД МІКСЕРА ПРИГОТУВАННЯ ФРУКТОВО- ОВОЧЕВИХ СОКОВИХ СУМІШЕЙ Керівник проекту: к.т.н. Бабій С. М. Виконав: ст. гр. ЕПА-14м Гома.
Only small steps in CORBA programming – much complexity
The Common Object Request Broker Architecture (CORBA)
Presentation transcript:

Java RMI & CORBA

Java RMI & CORBA2 Зміст J2EE. Підтримка CORBA. –Технологія Java IDL. –Технологія Java RMI/IIOP Сумісність RMI/IIOP - та CORBA-проектів

Java RMI & CORBA3 J2EE. Підтримка CORBA  Технологія Java IDL По суті надається можливість розробляти CORBA-проекти:  наявність сукупності класів, що підтримують основні засади технології CORBA;  наявність компілятора idlj, який дозволяє за IDL-файлом отримувати Java-класи для CORBA-проекту, зокрема, отримувати класи для проксі-об'єктів CORBA;  наявність служби іменування (orbd), що відповідає CORBA- специфікації. (Окрім orbd підтримується також “застаріла” служба іменування tnameserv).  Технологія Java RMI/IIOP  rmic -idl... Архітектура RMI

Java RMI & CORBA4 Взаємодія з клієнтом: –JSP (Java Server Pages). –Java сервлети. –Web-служби. Бізнес-логіка: –Enterprise Java Beans (EJB). (Специфікація EJB є серцевиною платформи J2EE). Базові служби (інтерфейси API): –JNDI –JTS –JPA –JTA –JDBC –RMI –RMI/IIOP –Java IDL –JCA –JMS –JavaMail –JAF Платформа J2EE. Механізми та служби У J2EE пропонується широкий спектр інтерфейсів API для уніфікованого доступу до сервісів (служб) та програм, реалізованих сторонніми організаціями

Java RMI & CORBA5 Сумісність RMI/IIOP- та CORBA-проектів “Сумісність” RMI/IIOP- та CORBA-проектів, що є “відповідними” один одному:  термін “сумісність” вжито тут у розумінні можливої взаємодії типу клієнт-сервер:  поняття “відповідних” проектів у даному випадку ґрунтується на специфічних правилах трансляції, а саме на правилах трансляції за схемами Java –> IDL та IDL–> Java, реалізованих JDK-утилітами rmic та idlj: а) (rmic -idl...) : Java –> IDL; б) (idlj... ) : IDL –> Java. RMI/IIOP - клієнт CORBA - клієнт RMI/IIOP - сервер CORBA - сервер

Java RMI & CORBA6 Використання технологій Java IDL та Java RMI/IIOP. Сумісні “RMI/IIOP-CORBA” клієнт-серверні проекти (1/2) Розглянемо один з варіантів сумісних “RMI/IIOP-CORBA” клієнт- серверних систем, а саме розподілену систему, яка складається з RMI/IIOP-сервера та CORBA-клієнта. Потреба у таких системах може виникати, наприклад, у таких випадках: припустимо є розроблений із використанням технології Java RMI/IIOP сервер, тобто є готовий RMI/IIOP-сервер, і треба реалізувати клієнтську програму, наприклад, у C++ (Object Pascal тощо) до того ж, можливо, на іншій платформі (у порівнянні з платформою сервера). Отже, виходячи із сумісності “RMI/IIOP-CORBA” проектів, можна клієнтську програму розробляти, ґрунтуючись на технології CORBA.

Java RMI & CORBA7 Використання технологій Java IDL та Java RMI/IIOP. Сумісні “RMI/IIOP-CORBA” клієнт-серверні проекти (2/2) Окремі кроки реалізації сумісного CORBA-клієнта можна представити наступним чином (для спрощення вважатимемо, що розподілена система ґрунтується на використання лише одного віддаленого класу): 1) за “віддаленим” класом треба отримати IDL-файл, скориставшись компілятором (rmic -idl...); 2) до отриманого IDL-файлу належить застосувати idl - компілятор (idl2cpp, idl2pas тощо на клієнтській платформі), щоб згенерувати класи CORBA-proxy (як класи C++, Object Pascal тощо), зокрема, у даному випадку важливо отримати клас CORBA-stub; 3) на основі згенерованого stub-класу завершити розробку клієнтської CORBA-програми, використовуючи традиційні підхід, притаманний CORBA-технології.

Java RMI & CORBA8 Приклад 1 Сумісні “RMI/IIOP-CORBA” проекти. Розробка CORBA-проектів за Java RMI/IIOP-проектами.

Java RMI & CORBA9 Розробка CORBA - проектів за Java RMI/IIOP - проектами:  Отримання IDL-файлів;  Розробка CORBA-проектів (клієнтських). Переконаємось у RMI/IIOP-CORBA сумісності: RMI/IIOP-клієнт CORBA-клієнт RMI/IIOP-сервер

Java RMI & CORBA10 import java.rmi.Remote; public interface sm extends Remote { float add(float arg1, float arg2) throws java.rmi.RemoteException; } import javax.rmi.PortableRemoteObject; public class smImpl extends PortableRemoteObject implements sm{ public smImpl() throws java.rmi.RemoteException { super(); // invoke rmi linking and remote object initialization } public float add(float arg1, float arg2) throws java.rmi.RemoteException { return (arg1 + arg2); } smImpl.java sm.java Java RMI/IIOP - проект import javax.naming.InitialContext; import javax.naming.Context; public class ServRMI_IIOP { public static void main(String[] args) { try { smImpl srvnt = new smImpl(); Context initctx = new InitialContext(); initctx.rebind("smService_IIOP", srvnt ); System.out.println("ServRMI_IIOP: Ready..."); } catch (Exception e) { System.out.println("Trouble: " + e); e.printStackTrace(); } ServRMI_IIOP.java Серверна частина

Java RMI & CORBA11 Розробка CORBA-проекту (клієнтської частини) rmic -idl smImpl idlj -fclient sm.idl Створення клієнтського основного класу smClientIDL.java

Java RMI & CORBA12 Sm1.java rmic -idl smImpl /** * sm.idl * Generated by rmic -idl. Do not edit * 3 Июнь 2007 г. 13:45:26 EEST */ #include "orb.idl" #ifndef __sm__ #define __sm__ interface sm { float add( in float arg0, in float arg1 ); }; #pragma ID sm "RMI:sm: " #endif sm.idl У підкаталозі з'являється файл sm.idl Крок: отримання IDL-файлів Можна було б спростити

Java RMI & CORBA13 Крок: IDL-компіляція idlj -fclient sm.idl

Java RMI & CORBA14 import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; public class smClientIDL { static sm sm_Impl; public static void main(String args[]) { try{ ORB orb = ORB.init(args, null); org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); String name = "smService_IIOP"; sm_Impl = smHelper.narrow(ncRef.resolve_str(name)); System.out.println("Obtained a handle on server object: " + sm_Impl); System.out.println(sm_Impl.add(10,5)); } catch (Exception e) { System.out.println("ERROR : " + e) ; e.printStackTrace(System.out); } CORBA-клієнт smClientIDL.java (основний клієнтський клас)... smImpl srvnt = new smImpl(); Context initctx = new InitialContext(); initctx.rebind("smService_IIOP", srvnt ); ServRMI_IIOP.java

Java RMI & CORBA15 Java RMI/IIOP -сервер та CORBA-клієнт java smClientIDL -ORBInitialPort ORBInitialHost localhost java -Djava.naming.factory.initial= com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url=iiop://localhost:1050 ServRMI_IIOP

Java RMI & CORBA16 Приклад 2 Сумісні “RMI/IIOP-CORBA” проекти. Розробка Java RMI/IIOP- проектів за CORBA- проектами.

Java RMI & CORBA17 Розробка Java RMI/IIOP - проектів за CORBA - проектами Переконаємось у RMI/IIOP-CORBA сумісності: RMI/IIOP - клієнт CORBA - клієнтCORBA - сервер

Java RMI & CORBA18 interface sm { float add( in float arg0, in float arg1 ); }; sm.idl CORBA - проект idlj -fall sm.idl

Java RMI & CORBA19 import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; import org.omg.PortableServer.*; import org.omg.PortableServer.POA; class smImpl extends smPOA { public float add(float arg1, float arg2) { return arg1+arg2; } CORBA-сервер. Файл smServerIDL.java (поч.) smServerIDL.java (поч.) Клас smImpl – клас-сервант public interface sm extends smOperations, org.omg.CORBA.Object, org.omg.CORBA.portable.IDLEntity { } // interface sm public interface smOperations { float add (float arg0, float arg1); } // interface smOperations

Java RMI & CORBA20 public class smServerIDL { public static void main(String args[]) { try{ ORB orb = ORB.init(args, null); POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); rootpoa.the_POAManager().activate(); smImpl s = new smImpl(); org.omg.CORBA.Object ref = rootpoa.servant_to_reference(s); sm href = smHelper.narrow(ref); org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); String name = "SmService_CORBA"; NameComponent path[] = ncRef.to_name( name ); ncRef.rebind(path, href); System.out.println("SmServerIDL ready and waiting..."); orb.run(); // wait for invocations from clients } catch (Exception e) { System.err.println("ERROR: " + e); e.printStackTrace(System.out); } CORBA-сервер. Файл smServerIDL.java (заверш.) smServerIDL.java

Java RMI & CORBA21 import java.rmi.RemoteException; import javax.rmi.*; import javax.naming.NamingException; import javax.naming.InitialContext; import javax.naming.Context; public class ClientRMI_IIOPtoCORBA { public static void main( String args[] ) { try { Context ic = new InitialContext(); Object objref = ic.lookup("SmService_CORBA"); System.out.println("Client: Obtained a ref to from name SmService_CORBA "); sm s = (sm) PortableRemoteObject.narrow(objref, sm.class); System.out.println("Obtained a handle on server object: " + s); System.out.println (s.add(2,5)); } catch( Exception e ) { System.err.println( "Exception " + e); e.printStackTrace( ); return; } Java RMI/IIOP -клієнт ClientRMI_IIOPtoCORBA.java

Java RMI & CORBA22 CORBA-сервер та Java RMI/IIOP -клієнт

Java RMI & CORBA23 Приклад 3  Розробка CORBA-клієнта за IDL-файлом для CORBA- сервера, розробленого під VisiBroker у Borland C++ Builder.  Використання StringifiedIOR. Проблеми портабельності.

Java RMI & CORBA24 CORBA-сервер, розроблений під VisiBroker у Borland C++ Builder interface sm { float add(in float a1,in float a2); }; addit.idl

Java RMI & CORBA25 import org.omg.CORBA.*; import java.io.*; public class client2 { public static void main(String[] argv) { try{ String s = null; String s1 = null; BufferedReader in = new BufferedReader(new FileReader("MyORef.ior")); s=in.readLine(); s1=s.substring(0,s.length()-1); System.out.println(s1); ORB myORB = ORB.init(argv, null); org.omg.CORBA.Object objRef = myORB.string_to_object(s1); sm server = smHelper.narrow(objRef); System.out.println("ob to_string - " + server.toString()); System.out.println("adding "+server.add(45,54)); BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Type Enter key"); System.out.println(stdin.readLine()); } catch (Exception e) { System.out.println("Error occurred while initializing server object:"); e.printStackTrace(); } idlj -fclient addit.idl CORBA-клієнт (java) client2.java

Java RMI & CORBA26 Портабельність Corba-рішень

Java RMI & CORBA27 Портабельність Corba-рішень. Проблеми... String s = null; String s1 = null; BufferedReader in = new BufferedReader(new FileReader("MyORef.ior")); s=in.readLine(); s1=s.substring(0,s.length()-1); System.out.println(s1); ORB myORB = ORB.init(argv, null); org.omg.CORBA.Object objRef = myORB.string_to_object(s1); sm server = smHelper.narrow(objRef);... Фрагмент client2.java Відрізається останній символ (символ нового рядка) !

Java RMI & CORBA28 Додаток

Java RMI & CORBA29 sm1Impl sm = new sm1Impl(); org.omg.CORBA.Object ref = rootpoa.servant_to_reference(sm); sm1 href = sm1Helper.narrow(ref);... System.out.println("Server_Corba ready and waiting..."); System.out.println("ob.toString - " + sm.toString()); System.out.println("obref.toString - " + href.toString()); System.out.println("StringifiedIOR - " + orb.object_to_string(href)); Server_Corba.java (фрагменти) toString: –об'єкт –об'єктне посилання –StringifiedIOR CORBA-сервер (варіант 2)

Java RMI & CORBA30 import javax.naming.InitialContext; import javax.naming.Context; public class Sm1Server { public Sm1Server() { try { Sm1 sm = new Sm1Impl(); Context initialNamingContext = new InitialContext(); initialNamingContext.rebind("SmService", sm ); System.out.println("RMI/IIOP:Sm1Server ready..."); System.out.print("ob.toString - " + sm.toString()); } catch (Exception e) { System.out.println("Fail: " + e); } public static void main(String args[]) { new Sm1Server(); } RMI/IIOP-сервер Sm1Server.java