CORBA (orbd) сетевая конфигурация? - PullRequest
3 голосов
/ 15 февраля 2012

Я только начинаю работать с CORBA.По сути, мне нужно реализовать приложение Java, которое действует как клиент CORBA.

На данный момент я в основном использую инструменты Sun JDK (JDK6), в том числе idlj.exe (для компиляции IDL).что мне дали) и orbd.exe (для тестирования моего кода), и до сих пор я смог использовать idlj и IDL для создания классов Java, а также я написал тестовое приложение для сервера и тестовое приложение для клиентаоба они сейчас работают (мне пришлось написать небольшое серверное приложение, чтобы я мог протестировать свое клиентское приложение).

Как я уже говорил выше, я использую orbd.exe в качестве ORB для своего тестирования.

Первоначально у меня был orbd.exe, мое приложение Java-сервера и приложение Java-клиента, все работающие на одной машине, и это работало.

Я также тестировал в более распределенномконфигурации, где я запустил orbd.exe и мое приложение Java-сервера на другом компьютере (testxp), а мое приложение Java-клиента - на другом компьютере, и это работает.

Мой вопрос заключается в следующем:документы, веб-страницы и т. д., которые я видел повторно.В CORBA есть диаграммы, показывающие два ORB, например, серверное приложение и ORB на одном компьютере, а также клиентское приложение и другой / 2nd ORB, работающий на другом / втором компьютере, причем два ORB взаимодействуют друг с другом:

клиентское приложение ==> ORB1 ----> ORB2 ==> серверное приложение

, тогда как в моем тестировании до сих пор, используя orbd.exe в качестве ORB, я использовал только один ORB.

Итак, мне было интересно, как я могу настроить тестовую конфигурацию, где есть два ORB, как описано выше?

Могу ли я сделать это с помощью orbd.exe или orbd.exe не работает в конфигурации такого типа?

Кроме того, если это можно сделать с помощью orbd.exe, как мне это сделать?

Спасибо, Джим

1 Ответ

1 голос
/ 17 февраля 2012

CORBA - это архитектура и инфраструктура для взаимодействия приложений в сети.И ORB - это компонент, который сериализует (маршал) и десериализует (демаршал) вызовы IIOP.С CORBA вы можете написать код на C # (используя IIOP.NET ) и обмениваться данными с сервером на Java.

Итак, вы правы, связь осуществляется между ORB.

| клиентское приложение |<==> ORB1 <- (IIOP) -> ORB2 <==> | серверное приложение |

ORBD - это ORB с сервером имен.Идеально, если у вас есть только одна служба имен, вы можете прочитать о службе имен здесь .

Наконец, у вас есть много способов начать общение между ORB.(a) активировать серванта в POA и вызвать метод * poa.object_to_string (servant) *, записать строку в файл и затем прочитать ее на клиенте, используя * poa.string_to_object (fileAsString) *.(б) определить хост и порт сервера и использовать corbaloc.(c) подписаться на сервере имен (лучший вариант).

Попробуйте использовать три процесса в своем тесте.Сервер имен, клиент, сервер.

PS: мне нравится JacORB, затем JDK Orb

РЕДАКТИРОВАТЬ: Добавление некоторого кода, чтобы помочь:

orb = org.omg.CORBA.ORB.init(args, props);
org.omg.CORBA.Object obj = this.orb.resolve_initial_references("RootPOA");
this.rootPOA = POAHelper.narrow(obj);
POAManager manager = this.rootPOA.the_POAManager();
manager.activate();
...