Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации

Начинание с IDL Java:
Запись Интерфейсного Определения

Прежде, чем Вы начнете работать с IDL Java, Вы должны установить версию 1.4 (или позже) платформы Java. Версия 1.4 (и позже) обеспечивает Прикладной программный интерфейс (API), и Посредник запросов к объектам (ШАР) должен был включить CORBA-на-основе распределенному объектному взаимодействию, так же как компилятору idlj. Компилятор idlj использует язык IDL к Java, отображающийся, чтобы преобразовать определения интерфейса IDL соответствующим интерфейсам Java, классам, и методам, которые можно тогда использовать, чтобы реализовать Ваш код клиента и сервера.

Этот раздел учит Вас, как записать простое определение интерфейса IDL и как преобразовать интерфейс IDL в Java. Это также описывает цель каждого файла, сгенерированного компилятором idlj.

Эти темы включаются в этот раздел:

  1. Запись Hello.idl
  2. Понимание файла IDL
  3. Отображение Hello.idl к Java
  4. Понимание idlj Выхода компилятора

Запись Hello.idl

Создать файл Hello.idl,
  1. Создайте новый каталог, названный Hello, для этого приложения.
  2. Запустите свой любимый текстовый редактор и создайте файл под названием Hello.idl в этом каталоге.
  3. В Вашем файле введите код для интерфейсного определения, Hello.idl:
    module HelloApp
    {
      interface Hello
      {
        string sayHello();
        oneway void shutdown();
      };
    };
    
  4. Сохраните файл.

Понимание файла IDL

IDL OMG является языком, используемым, чтобы описать интерфейсы, что клиент возражает вызову, и объектные реализации обеспечивают. Интерфейсное определение, записанное в IDL OMG полностью, определяет интерфейс и полностью определяет параметры каждой работы. Интерфейс IDL OMG предоставляет информацию, должен был разработать клиенты, которые используют операции интерфейса.

Клиенты пишутся на языках, для которых были определены отображения от понятий IDL OMG. Отображение понятия IDL OMG к клиентской конструкции языка будет зависеть от средств, доступных на клиентском языке. OMG определяет отображение от IDL до нескольких различных языков программирования, включая C, C++, Smalltalk, КОБОЛ, Аду, Lisp, Python, и Java. Когда отображено, каждый оператор в IDL OMG преобразовывается в соответствующий оператор в предпочтительном языке программирования.

Например, Вы могли использовать инструмент idlj, чтобы отобразить интерфейс IDL на Java и реализовать клиентский класс. Когда Вы отобразили тот же самый IDL на C++ и реализовали сервер на том языке, клиент Java (через ШАР Java) и сервер C++ (через ШАР C++) взаимодействует, как если бы они были записаны на том же самом языке.

IDL для "Привет Мира" чрезвычайно прост; его единственный интерфейс имеет только две операции. Вы должны выполнить только три шага:

  1. Объявите модуль IDL CORBA
  2. Объявите интерфейс
  3. Объявите операции

Объявление Модуля IDL CORBA

Модуль CORBA является пространством имен, которое действует как контейнер для связанных интерфейсов и объявлений. Это соответствует близко пакету Java. Каждый оператор модуля в файле IDL отображается на оператор пакета Java.

Оператор модуля похож на это:

module HelloApp
{
    // Subsequent lines of code here.
};

Когда Вы скомпилируете IDL, оператор модуля генерирует оператор пакета в коде Java.

Объявление Интерфейса

Как интерфейсы Java, интерфейсы CORBA объявляют, что API сокращается, объект имеет с другими объектами. Каждый интерфейсный оператор в IDL отображается на оператор интерфейса Java когда отображено.

В Вашем файле Hello.idl интерфейсный оператор похож на это:

module HelloApp
{
  interface Hello  // These lines
  {                // declare the 
                   // interface
  };               // statement.
};

Когда Вы скомпилируете IDL, этот оператор генерирует интерфейсный оператор в коде Java.

Объявление Операций

Операции CORBA являются поведением, которое серверы обещают выполнить от имени клиентов, которые вызывают их. Каждый оператор работы в IDL генерирует соответствующий оператор метода в сгенерированном интерфейсе Java.

В Вашем файле Hello.idl оператор работы похож на это:

module HelloApp
{
  interface Hello
  {
    string sayHello();        // This line is an operation statement.
    oneway void shutdown();   // This line is another
  };
};
Интерфейсное определение для наш немного "Привет Мировое" приложение теперь полно.

Отображение Hello.idl к Java

Инструмент idlj файлы IDL OMG чтений и создают необходимые файлы Java. Значения по умолчанию компилятора idlj к генерированию только привязка клиентской стороны. Если Вы нуждаетесь и в привязке клиентской стороны и в скелетах серверной стороны (как Вы делаете для нашей "Привет Мировой" программы), следует использовать опцию -fall, выполняя компилятор idlj. Для получения дополнительной информации по опциям компилятора см. опции компилятора IDL к Java.

Отображение серверной стороны по умолчанию, сгенерированное, когда или -fall или параметры -fserver используются, соответствует Главе 11, Переносимый Объектный Адаптер (POA) CORBA 2.3.1 Спецификации (formal/99-10-07). Для получения дополнительной информации по POA см. Переносимый Объектный Адаптер.

Преимущества использования Переносимого Объектного Адаптера (POA):

  1. Удостоверьтесь, что каталог jdk/bin (или каталог, содержащий idlj, java, javac, и orbd), находятся в Вашем пути.
  2. Пойдите в приглашение командной строки.
  3. Изменитесь на каталог, содержащий Ваш файл Hello.idl.
  4. Введите команду компилятора:
       
            idlj -fall Hello.idl
    

Если Вы перечислите содержание каталога, то Вы будете видеть, что каталог под названием HelloApp был создан и что это содержит шесть файлов. Откройте Hello.java в своем текстовом редакторе. Hello.java является интерфейсом подписи и используется, поскольку подпись вводит объявления метода, когда интерфейсы указанного типа используются в других интерфейсах. Это похоже на это:

//Hello.java
package HelloApp;


/**
* HelloApp/Hello.java
* Generated by the IDL-to-Java compiler (portable), version "3.0"
* from Hello.idl
*/

public interface Hello extends HelloOperations, org.omg.CORBA.Object, 
org.omg.CORBA.portable.IDLEntity 
{
} // interface Hello

С интерфейсом это простое, легко видеть, как операторы IDL отображаются на сгенерированные операторы Java.

Оператор IDL       Оператор Java
module HelloApp       package HelloApp;
interface Hello       public interface Hello

Единственный удивительный элемент является оператором extends. Все объекты CORBA получаются из org.omg.CORBA.Object, чтобы гарантировать требуемую функциональность CORBA. Необходимый код сгенерирован idlj; Вы не должны сделать никакого отображения.

В предыдущих версиях компилятора idlj (известный как idltojava), операции, определенные в интерфейсе IDL, существовали бы в этом файле также. Запускаясь с J2SDK v1.3.0, в соответствии с CORBA 2.3.1 Спецификации (formal/99-10-07), отображение IDL к Java помещает все операции, определенные в интерфейсе IDL в интерфейсе операций, HelloOperations.java. Интерфейс операций используется в отображении серверной стороны и как механизм для того, чтобы обеспечить оптимизированные призывы к cо-расположенным клиентам и серверам. Для Hello.idl этот файл похож на это:

//HelloOperations.java
package HelloApp;


/**
* HelloApp/HelloOperations.java
* Generated by the IDL-to-Java compiler (portable), version "3.0"
* from Hello.idl
*/

public interface HelloOperations 
{
  String sayHello ();
  void Shutdown ();
} // interface HelloOperations

Поскольку есть только две операции, определенные в этом интерфейсе, легко видеть, как операторы IDL отображаются на сгенерированные операторы Java.

Оператор IDL       Оператор Java
string sayHello();       String sayHello();
oneway void shutdown();       void Shutdown ();

Понимание Выхода компилятора idlj

Компилятор idlj генерирует много файлов. Фактическое число сгенерированных файлов зависит от опций, выбранных, когда файл IDL компилируется. Сгенерированные файлы обеспечивают стандартную функциональность, таким образом, можно проигнорировать их, пока не пора развернуть и выполнить Вашу программу. Под J2SE v.1.4, файлы, сгенерированные компилятором idlj для Hello.idl, с параметром командной строки -fall:

Когда Вы пишете интерфейс IDL, Вы делаете все программирование, требуемое генерировать все эти файлы для Вашего распределенного приложения. Следующие шаги должны реализовать классы клиента и сервера. В шагах, которые следуют, Вы создадите клиентский класс HelloClient.java и класс сервера HelloServer.java.

Поиск и устранение неисправностей

Для получения дополнительной информации


Oracle и/или его филиалы Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами