Шаблоны: преобразование классов Java из объектов оси - PullRequest
7 голосов
/ 27 октября 2008

Я использую ось для автоматической генерации артефактов веб-сервиса, которые затем преобразую в объекты, используемые в нашем приложении. Есть ли разумная модель для этого? Мы написали методы преобразования для вывода наших объектов из созданных осями объектов, в других случаях мы написали промежуточный набор классов преобразователей, которые преобразуют объекты осей в объекты нашего приложения? Есть ли общий подход к этому?

Ответы [ 5 ]

3 голосов
/ 05 ноября 2008

Если я правильно понимаю, вы хотите использовать функцию Axis WSDL2Java для генерации кода из WSDL, а затем сопоставить его с существующей объектной моделью приложения. В этом случае вы можете использовать Axis с привязкой JiBX .

1 голос
/ 07 ноября 2008

Я думаю, что есть здравый смысл способ сделать это. Немного абстрагируйся и представь слои.

  1. Вы получаете библиотеку с базовым вводом-выводом и, возможно, базовыми функциями сеанса и / или учетными данными.
  2. Создать конвертируемый слой. Здесь вы разместите весь код, необходимый для создания зависимых от вашего приложения объектов. Закончите этот слой с хорошим интерфейсом для вашего приложения.

Слой преобразования может быть выполнен несколькими способами.

  • Если преобразование простое, вы можете объединить первый и второй слой почти в один. Расширьте POJOS, чтобы обеспечить функциональность преобразования. Это даст вам, по крайней мере, две части кода, автоматически сгенерированные и расширения + функциональность

  • Если речь идет об огромных XML-файлах, которые необходимо преобразовать в несколько небольших объектов приложения. Хорошо, оставьте первый слой как есть, и при втором использовании:

    • Шаблон команды : для инкапсуляции преобразований.
    • Если преобразование также становится беспорядочным: Цепочка ответственности поможет вам создать дерево преобразований.

Надеюсь, это поможет

1 голос
/ 06 ноября 2008

Если цель состоит в том, чтобы перевести «сгенерированную ось» в ваши бизнес-объекты, вы можете попробовать инструмент, подобный dozer (http://dozer.sourceforge.net/), который представляет собой «маппер» для копирования из реализации объекта в другую реализацию. Он не знает, как его использовать (я думаю, что вы должны объяснить перевод в XML-файлах), и тогда он должен работать (я не использовал себя, но некоторые коллеги использовали его для аналогичной цели, и, похоже, он работал)

0 голосов
/ 05 ноября 2008

Если вы используете Axis 1, ваши бизнес-классы имеют то же квалифицированное имя, что и класс данных Axis, и применяются некоторые другие условия, вы можете просто использовать свои бизнес-классы вместо Axis без настройки. Мы делали это много раз.

Для Axis 2 у нас были проблемы с привязками данных, отличными от ADB (по умолчанию), поэтому мы широко используем Apache Commons Beanutils для копирования данных между классами Axis и нашими бизнес-классами.

0 голосов
/ 27 октября 2008

Мы сталкивались с подобными проблемами в прошлом. Недавно для сложного веб-сервиса, для которого у нас была Axis, генерируются артефакты, мы создали 157 классов Java с именами, такими как «MaintainOffersRequestTypeReqReqDataMaintEnhancementCancellationReason».

Мы завершили написание классов, которые преобразуют эти сгенерированные Axis объекты в бизнес-объекты, аналогично вашей последней идее. Я не знаю, является ли это лучшим способом, но это, безусловно, работоспособное решение.

...