У меня есть три разных сервиса 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>
Я на правильном пути? Или у вас есть альтернативные решения проблемы?