Как я могу сказать wsimport, что отдельные файлы WSDL ссылаются на одни и те же классы объектов? - PullRequest
4 голосов
/ 06 апреля 2011

У меня есть три разных сервиса 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>

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

1 Ответ

2 голосов
/ 24 июня 2011

Определите ваши общие классы в 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>

...

ref: http://jax -ws.java.net / jax-ws-21-ea1 / docs / customizations.html # 2.6_Class_Customization

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...