Как я могу использовать @SchemaValidation для проверки по пользовательскому .xsd вместо сгенерированного?
Я попробовал параметр schemas
, но не смог найти никакой полезной документацииоб этом.Поэтому я попробовал несколько вариантов, но что бы я там ни указывал, сервер запускается, работает, без ошибок ... но, похоже, игнорирует этот параметр.
Мне также не удается найти какие-либо рабочие примеры.Все, что я знаю, это то, что для этого требуется String Array of Strings, описанный как «Необязательный список расположений схем».
Работает ли «схема»?Каков правильный синтаксис для предоставления моего собственного местоположения схемы?
Можно ли вывести мой собственный .xsd, когда кто-то вызывает http://example.com/myservice?wsdl
?
@WebContext(contextRoot = "xxx")
@WebService(name = "xxx", serviceName = "xxx", targetNamespace = "http://url.com/")
@HandlerChain(file = "/handler-chain.xml")
@SecurityDomain("xxx")
@SchemaValidation(schemas = {"classpath:/url/my.xsd"})
Дополнительная информация:
Я использую вышеупомянутые аннотации для предоставления веб-службы SOAP.Это работает, я мог даже настроить аутентификацию через @ SecurityDomain.
Затем была проверка схемы.Я узнал об org.apache.cxf.annotations @SchemaValidation, и он работает безупречно с автоматически сгенерированным .wsdl из DTO.(Это было еще до @SchemaValidation, но явно игнорировалось.)
Поскольку наш проект работает с .xsd в качестве базы, я использую jaxb2-maven-plugin
для генерации DTO и использую их для веб-сервиса.К сожалению, некоторая информация теряется при переводе, например длины строк или шаблоны регулярных выражений.
Поскольку у меня есть такой строгий .xsd, имеет смысл проверять его, а не повторять автоматически сгенерированные из DTO,в которой отсутствуют длины строк и шаблоны регулярных выражений.
Я пробовал как на уровне класса, так и на уровне метода, но безрезультатно.