CXF java2ws: как включить внешние файлы xsd? - PullRequest
5 голосов
/ 14 июля 2011

Я генерирую файлы WSDL для нескольких веб-сервисов (из определений сервисов сервера), где у меня уже есть схемы XML (* .XSD) для bean-компонентов, используемых в качестве параметров.Как мне сказать java2ws ссылаться на них (включая внешний XSD), а не создавать свои собственные в WSDL?

Я пробовал -createxsdimports, но он генерирует свои собственные файлы XSD.

Есть ли аннотация Java, которую я могу использовать, чтобы CXF знал, где находится XSD для каждого файла / пакета?

Ответы [ 2 ]

4 голосов
/ 15 июля 2011

Попробуйте аннотацию @XmlSchema. Он включает параметр location, который используется для сообщения JAXB о существовании реальной схемы:

@XmlSchema(location="http://www.example.com/xsds/foo.xsd")
package com.example.foo;
2 голосов
/ 29 апреля 2013

У меня есть CXF Webservice, который импортирует внешние файлы схемы.Когда я построил это;Я потратил немало времени, пытаясь разобраться в точном сценарии, которого вы пытаетесь достичь.К сожалению, похоже, что CXF не учитывает аннотацию @XmlSchema (location = "") при создании WSDL из Java.Дэниел Кулп, главный разработчик CXF, сказал мне, что это была известная проблема, но не многие жалуются на нее, поэтому она не стоит в списке приоритетов, которые нужно исправить.

Так что я закончил писать WSDLвручную, а затем генерируя SEI из файла WSDL.Конечно, если вы пишете WSDL от руки, вы можете делать все, что захотите.

Имейте в виду, что одним из побочных эффектов этого является то, что внешний файл схемы должен быть доступен через HTTP GET - обапри генерации SEI И при запуске приложения веб-службы - CXF при запуске извлечет файл схемы.То же самое касается, когда вы генерируете клиента, конечно.Это создает некоторую грязную архитектурную зависимость;но, похоже, нет никакого способа сказать, что CXF "myschema.xsd" доступен в http://myurl.com/myschema.xsd, но также в /src/main/schema/myschema.xsd.

...