如何使用@SchemaValidation验证自定义.xsd,而不是生成的自定义.xsd?
我尝试了参数schemas
,但是找不到任何有用的文档。因此,我尝试了一些变体,但是无论放置在哪里,服务器都可以启动,运行,没有错误……但似乎忽略了此参数。
我也找不到任何可行的例子。我所知道的是,它需要一个字符串字符串数组,称为“模式位置的可选列表”。
“方案”是否有效?提供我自己的架构位置的正确语法是什么?
有人呼叫http://example.com/myservice?wsdl
时是否可以输出我的自定义.xsd?
@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 Web服务。它有效,我什至可以通过@SecurityDomain设置身份验证。
接下来是模式验证。我发现了有关org.apache.cxf.annotations @SchemaValidation的信息,它使用DTO自动生成的.wsdl可以正常工作。 (哪一个在@SchemaValidation之前就在那里,但似乎被忽略了。)
由于我们的项目以.xsd为基础,因此我使用jaxb2-maven-plugin
来生成DTO,并将其用于Web服务。不幸的是,翻译中会丢失一些信息,例如字符串长度或正则表达式模式。
由于我使用的是严格的.xsd,因此有必要对此进行验证,而不是再次使用DTO自动生成的代码(缺少字符串长度和Regex模式)。
我在类和方法级别上都尝试过,但无济于事。