2010-12-01 2 views
0

У меня есть определенный файл IDL, который выглядит следующим образом:CORBA IDL + + Java: нужна помощь с написанием рабой

module Banking { 
    typedef string Transactions[5]; 
    typedef long AccountId; 

    interface Account { 
     exception InsufficientFunds {}; 

     readonly attribute double balance; 
     long lodge(in double amount); 
     long withdraw(in double amount) raises (InsufficientFunds); 
     readonly attribute Transactions transactions; 
    }; 

    interface Bank { 
     long accountCount(); 
     double totalMoney(); 
     Account account(in AccountId accNr); 
    }; 
}; 

, который я компилирую с idlj. Я определил BankServant, используемый клиентом для связи с сервером, и у меня есть рабочая программа с почти всеми реализованными методами. Моя единственная проблема заключается в том, что я не знаю, как реализовать метод account(in AccountId accNr), который, в свою очередь, вернет правильный объект Account. Поскольку я не знаю CORBA, и я просто помогаю другу, я хотел бы попросить какие-то решения/примеры/tutorialis, которые могут помочь мне взломать простой, но рабочий класс, для работы с такими ситуациями.

Заранее спасибо.

ответ

1

Это действительно зависит от политики, которую вы используете для POA (переносного объектного адаптера). Предполагая, что вы используете RootPOA на сервере, вам необходимо:

  1. Создайте объект реализации для объекта Account. Обычно это называется AccountImpl или AccountServant, как я вижу от имени банковского слуги.

    AccountServant as = new AccountServant(accNr);

  2. Вы должны зарегистрировать объект в РОА. Это опять же связано с политиками, которые вы выбрали для своей POA. используя Root по умолчанию АПО на:

    org.omg.CORBA.Object o = rootPOA.servant_to_reference(as);

  3. Узкие это правильный Account типа, используя компилятор IDL генерируемой AccountHelper:

    Account acc = AccountHelper.narrow(o);

  4. Возвращение его

    return acc;

Этот код предполагает, что вы создали конструктор для java-объекта AccountServant, который принимает номер учетной записи в качестве первого аргумента. Вы должны предоставить BankServant также ссылку на POA, в которой вы хотите зарегистрировать вновь созданные объекты Account.

Есть много учебников. См., Например, this one, так как набор опций для POA так много, что требует книги, чтобы объяснить их все :).

+0

Большое спасибо - я не хотел узнать все о CORBA, поскольку это должно быть 15-минутной справкой, но у меня было мало проблем, даже после прочтения некоторых уроков. – zeroDivisible 2010-12-02 05:17:52

Смежные вопросы