Пользовательская генерация IDL с JACORB maven компилятором - PullRequest
1 голос
/ 09 июня 2011

Мне нужно интегрировать систему Java с устаревшей системой C ++. Эти две системы общаются через CORBA. Поскольку система Java работает на JBoss, мы используем JacORB.

Для создания заглушек Java из файлов .idl мы используем плагин maven-idl-compiler (используя JacORB)

org.codehaus.mojo idlj-Maven-плагин org.jacorb jacorb-IDL-компилятор 2.2.3 предоставлена

Все работает нормально, но я хотел бы изменить способ генерирования заглушек (меняет имена методов, классов и т. Д.). Есть ли способ сделать это?

Ответы [ 3 ]

1 голос
/ 04 октября 2012

Все работает нормально, но я хотел бы изменить способ генерирования заглушек (изменяет имена методов, классов и т. Д.). Есть ли способ сделать это?

Это невозможно.

Серверный скелет и клиентская заглушка генерируются Corba в выбранной вами реализации. Они в основном содержат Marshaller и Unmarshaller для обработки параметров объекта ORB, когда вы вмешиваетесь в распределенные объекты.

Весь этот код тесно связан с языком IDL, используемым в CORBA, поскольку генерация зависит от предоставленной вами IDL.

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

Однако вы всегда можете изменить сам IDL, чтобы адаптировать его к вашим потребностям.

1 голос
/ 12 октября 2015

Обычно люди в этой ситуации используют шаблон фасада.

https://en.wikipedia.org/wiki/Facade_pattern

Создайте IDL как обычно, затем создайте другой класс, который эффективно оборачивает класс IDL, но просто передает вызовы в интерфейс IDL. Используя этот метод, вы можете создать новые имена для метода, который вы можете использовать в своей программе. У вас также есть возможность упростить методы, если вы, например, всегда передаете одни и те же параметры в определенных ситуациях.

Другое преимущество заключается в том, что если авторы IDL решили переименовать один из своих методов или изменить параметры, у вас есть определенный уровень защиты, поскольку вы не используете их интерфейс непосредственно в вашей программе.

0 голосов
/ 06 июля 2011

Вы можете изменить код в $ JACORB_HOME / src / org / jacorb / idl, чтобы генерировать все, что вы хотите. Взгляните на метод printStreamBody в OpDecl.java для примера кода генерации, который выглядит простым для понимания и изменения.

...