Jax-ws wsgen для генерации wsdl, который ссылается на общую схему

Мы разрабатываем довольно большое приложение с несколькими десятками сервисных интерфейсов. Для каждого сервиса генерируется wsdl с помощью wsgen (используя плагин jaxws-maven-plugin maven). Для каждого сервиса в wsdl используется отдельное пространство имен.

Сервисные интерфейсы совместно используют набор общих компонентов (в основном DTO). Так как теперь определения для этих общих классов определены в каждом wsdl XSD, дублирующем много информации, и это вызывает у нас проблемы на стороне клиента (огромное время компиляции, несовместимость классов).

Сначала я попытался создать схему для общих классов с помощью schemagen, но не смог передать ее в wsgen. Есть ли способ передать один (или несколько) общих XSD(s) в wsgen и сгенерировать wsdl(s), ссылающиеся на них?

Я также попытался аннотировать общие классы с помощью @XmlRootElement, указав пользовательское пространство имен: на этот раз wsgen распознал пользовательское пространство имен и сгенерировал еще один XSD для каждого wsdl, но не включил ни одного (общего) xsd везде.

Может ли кто-нибудь указать мне решение этой проблемы?

2 ответа

У меня была похожая проблема.

Я добавил примечание ниже к общим классам, чтобы они не генерировались несколько раз для каждого wsgen.

@XmlType(namespace = "http://mypackage.mycompany.com/")
public MyClass implements Serializable {
// ... class contents
}

У нас с тобой много общего.:)

Мы делаем много похожих вещей: у нас есть веб-сервисы, основанные на WSDL, и DTO, используемые в нашем приложении. Однако мы определяем наши DTO с помощью XML-схем, чтобы мы могли добавить к ним метаданные, которые добавляют код к сгенерированной Java с помощью плагинов JAXB. Мы намеревались использовать эти DTO на основе XSD в наших веб-службах, но по корпоративному стандарту мы были вынуждены использовать некоторые общие корпоративные XSD в наших веб-службах. Это не имело бы никакого значения - мы могли бы так же легко использовать наши DTO XSD.

Что касается вашей проблемы, у нас есть XSD для наших DTO, которых у вас нет. Если вы сделали это, то единственное, что вам нужно - предполагать, что многомодульный проект Maven - это как разрешить схемы между модулями. Мы сделали это, разветвив плагин jaxws maven и добавив в него преобразователь схемы каталога на основе CLASSPATH.

Я полагаю, о том, чтобы вы создавали схемы для своих DTO, не может быть и речи? Больше я ничего не могу поделать, так как никогда не использовал аннотации jaxb. Сожалею.

Другие вопросы по тегам