Как я могу сообщить wsimport, что отдельные файлы WSDL относятся к одним и тем же классам объектов?

У меня есть три разных сервиса JAX-WS, которые используют одни и те же классы на сервере (например, ServiceA, ServiceB и ServiceC, все из которых используют MyCommonClass в качестве параметра). Другой модуль, который мы разрабатываем, использует wsimport для создания клиента для этих служб, однако проблема в том, что wsimport создает отдельные экземпляры MyCommonClass для каждой службы:

  • com.company.servicea.endpoint.MyCommonClass
  • com.company.serviceb.endpoint.MyCommonClass
  • и Т. Д.

Я знаю, что могу использовать параметр wsimport -p, чтобы указать общий пакет для каждой конечной точки, однако я хотел бы сохранить большинство классов в отдельных пакетах, а просто поделиться некоторыми общими. Из того, что я прочитал, похоже, что файлы привязок JAXB могут помочь, но я еще не понял точный синтаксис для достижения желаемого результата. Я думаю, что мне понадобится отдельный файл привязок для каждой службы (поскольку я вызываю wsimport один раз для каждой), который выглядит примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.1" xmlns:tns="http://endpoint.servicea.company.com/">
  <bindings node="//xsd:complexType[@name='myCommonClass']">
    <class name="com.company.model.MyCommonClass"/>
  </bindings>
</bindings>

Я на правильном пути? Или у вас есть какие-то альтернативные решения проблемы?


person GaZ    schedule 06.04.2011    source источник


Ответы (1)


Определите свои общие классы в xsd и импортируйте их в сервисные WSDL. Затем используйте настройку схемы для создания определений в этой схеме в отдельном пакете, таком как «com.company.model».

<jxb:bindings
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
   version="1.0">
    <jxb:bindings schemaLocation="model.xsd" node="/xsd:schema">
        <jxb:schemaBindings>
        <jxb:package name="com.company.model"/>
        </jxb:schemaBindings>
</jxb:bindings>

...

ссылка: http://jax-ws.java.net/jax-ws-21-ea1/docs/customizations.html#2.6_Class_Customization

person kiri    schedule 24.06.2011