Лабораторная работа: Реализация почтового клиента и сервера на основе CORBA
Файлы HelloServer.java and HelloClient.java, Hello.idl и папка HelloApp, созданная idkj.exe должны храниться в одной папке.
Для компиляции клиента и сервера надо в командной строке набрать
javac *.java HelloApp/*.java
javac.exe находится в …\jdk1.5.0\bin.
Среда Eclipse не позволяет запускать CORBA‑приложения. Для запуска
1. Запустить службу orbd – Object Request Broker Daemon (…\jdk1.5.0\bin\orbd.exe). Это делается, чтобы мы смогли получить ссылку на службу имен.
start orbd – ORBInitialPort 1050
Параметр – ORBInitialPort – номер порта, на котором будет работать сервер имен.
2. Запуск сервера
start java HelloServer – ORBInitialPort 1050 – ORBInitialHost localhost
Указывается порт, на котором работает сервер имен. Параметр – ORBInitialHost указывает хост, на котором работает сервер имен.
3. Запуск клиента
java HelloClient – ORBInitialPort 1050 – ORBInitialHost localhost
Указывается порт, на котором работает сервер имен. Параметр – ORBInitialHost указывает хост, на котором работает сервер имен.
Для удобства компиляции и запуска можно создать bat‑файл:
idlj – fall Hello.idl
javac *.java HelloApp/*.java
start java HelloServer – ORBInitialPort 1050 – ORBInitialHost localhost
java HelloClient – ORBInitialPort 1050 – ORBInitialHost localhost
6.2 Язык IDL
Язык OMG IDL (Interface Definition Language – Язык Описания Интерфейсов) представляет собой технологически независимый синтаксис для описания интерфейсов объектов. При описании программных архитектур, OMG IDL прекрасно используется в качестве универсальной нотации для определения границ объекта, определяющих его поведение по отношению к другим компонентам информационной системы. OMG IDL позволяет описывать интерфейсы, имеющие различные методы и атрибуты. Язык также поддерживает наследование интерфейсов, что необходимо для повторного использования объектов с возможностью их расширения или конкретизации.
IDL является чисто декларативным языком, то есть он не содержит никакой реализации. IDL‑спецификации могут быть откомпилированы (отображены) в заголовочные файлы и специальные прототипы серверов, которые могут использоваться непосредственно программистом. То есть IDL‑определенные методы могут быть написаны, а затем выполнены, на любом языке, для которого существует отображение из IDL. К таким языкам относятся C, C++, SmallTalk, Pascal, Java, Ada.
С помощью IDL можно описать и атрибуты компоненты, и родительские классы которые, она наследует, и вызываемые исключения, и, наконец, методы, определяющие интерфейс, причем с описанием входных и выходных параметров.
Структура CORBA IDL файла выглядит следующим образом:
module <identifier> {<type declarations>;<constant declarations>;<exception declarations>;interface <identifier> [:<inheritance>] {<type declarations>;<constant declarations>;<attribute declarations>;<exception declarations>;[<op_type>]<identifier>(<parameters>)[raises exception] [context]..[<op_type>]<identifier>(<parameters>)[raises exception] [context]..}interface <identifier> [:<inheritance>]..}Синтаксис языка IDL довольно объемный и не представляется возможным описать его в методическом пособии.
Для реализации интерфейса почтового сервера можно дополнить Hello.idl
module HelloApp
{
struct TMessage
{