| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > RMI-IIOP на примере |
| Автор: Domestic Cat 14.3.2005, 22:07 | ||||||||
| RMI-IIOP на примере 1. Что такое RMI-IIOP? RMI over Internet Inter-ORB Protocol. Порпосту, это та же RMI, но с возможностями CORBA - "общаться" с сервисами не только на Java. RMI-IIOP используется, в частности, в EJB. 2. Как ни странно, для данного примера тянуть ничего не нужно. Мы воспользуемся сервером orbd (Object Request Broker Daemon) и его NS (Naming Service), поставляемым с J2SE. 3. В целом действия наши те же, что и при написании обычного RMI приложения. Однако, нам необходим JNDI для определения местонахождения сервиса, см. http://forum.vingrad.ru/index.php?showtopic=45382. Нашей задачей будет написать сервис, передающий текущее время в мс. 4. Начнем с ремоут интерфейса:
5. Добавляем его реализацию
Здесь видно 2 отличия от RMI JRMP (Java Remote Method Protocol): класс наследует от PortableRemoteObject, конструктор должен бросать RemoteException. 6. Пишем сервер:
Мы пользуем JNDI, поэтому объект TimeServiceImpl неободимо привязать к контексту. 7. Клиент:
Заметим главное отличие от примера с File Service: использование метода PortableRemoteObject.narrow. Мы не можем сделать простой кастинг в TimeService, поскольку совсем необязательно, что полученный объект (точнее, стаб) - это Java объект. 8. Теперь нужно скомпилить все классы: javac *.java 9. Следующий шаг - создать стаб и скелет для RMI-IIOP. Запускаем rmi компилятор с опцией -iiop rmic -iiop TimeServiceIpml 10. Запускаем сервер на порту 1999 (собственно, на любом свободном): orbd -ORBInitialPort 1999 (для винды : start orbd -ORBInitialPort 1999 ) 11. Запускаем сервис: java -Djava.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url=iiop://localhost:1999 Server Кстати, это еще один способ передать параметры в InitialContext, - помимо описанных в примере про JNDI. 12. Запускаем клиента: java -Djava.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url=iiop://localhost:1999 Client Service is found, time is 1110824870448 |