Как просто конвертировать jaxws объекты - PullRequest
3 голосов
/ 06 марта 2011

Привет, у меня есть веб-сервисы, вызывающие друг друга с помощью jaxws.Проблема в том, что я передаю объекты, классы.И каждый раз, когда я получаю объект, принадлежит другому пакету (proxy1.jaxs.myClass ...), поэтому мне приходится писать конверты вперед и назад.Есть ли простой способ для преобразования между прокси-объект, в объект Orianl или другой прокси-объект?спасибо, надеюсь, я объяснил себе.

Ответы [ 2 ]

1 голос
/ 11 марта 2011

Полагаю, вы хотите повторно использовать свой собственный Java Bean в клиенте вместо использования артефактов, сгенерированных JAX-WS / JAX-B.

Решение состоит в том, чтобы указать JAX-B, что вы хотите использовать определенные классы для представления бина. Посмотрите на JAX-B Bindings, решение должно выглядеть так:

<jxb:bindings schemaLocation="YourService_schema1.xsd" node="/xs:schema">
<jxb:bindings node="//xs:complexType[@name='yourType']">
    <jxb:class ref="com.myoriginalpackage.YourType">
    </jxb:class>
</jxb:bindings>

На этой странице есть другие примеры для обработки определенных типов Java: http://confluence.highsource.org/display/HJ3/Apache+CXF+Tutorial+-+Building+JAX-WS,+JAXB+and+JPA-based+web+service+with+Apache+CXF,+Spring+and+Hyperjaxb3

1 голос
/ 06 марта 2011
  1. Dozer довольно хорошо, если классы похожи, вы даже можете обойтись без сложной конфигурации XML.Но имейте в виду, что вам придется провести модульное тестирование Dozer-сопоставления, так как оно работает с отражением, и вы должны быть уверены, что все поля правильно сопоставлены.

  2. XSLT - если вы только передаете объектыбез какой-либо логики, может быть, простое преобразование, работающее на уровне SOAP XML, поможет?

...