[英]Validating web service request against XSD in jax-ws?
我正在使用jax-ws
开发基于soap的Web服务。 我在终点以下,它具有如下一种Web方法。
@WebService
public interface MySoapService {
@WebMethod
public List<Result> getResult(TestRequest request);
}
在上面的Web方法中, TestRequest是使用JAXB从我的XSD生成的 。 我的问题是,因为此Web服务是公开的,并且它将JAXB生成的对象作为输入, 我是否需要针对XSD执行任何验证 ?
如果我的方法将XML字符串作为输入,那么我可以针对XSD进行验证。 但是这里我有一个webmethod,它直接将JAXB对象作为输入。 在这种情况下,由XSD验证输入是其责任。
另外,请向我建议使用JAX-WS,我的Web方法将JAXB生成的对象作为输入而不是XML字符串。 那么哪个是标准的? 将xml字符串作为输入或从XSD生成的JAXB对象 ? 我可以直接编写一个接受JAXB生成对象的Web方法吗?
谢谢!
默认情况下,JAX-WS不对传入的请求执行模式验证。 您可以通过将@SchemaValidation添加到服务中来启用它。
但是,在回答您的最后一个问题时,您的方法肯定应该接受JAXB生成的对象作为参数。 接受XML作为字符串是一个非常糟糕的主意,因为它表示未对其进行验证或解析。 使用JAX-WS,Spring-WS等的全部目的是避免自己弄乱XML。 这些库为您做得很好。
之后,通常不需要打开模式验证。 这是因为JAX-WS将尝试使用JAXB编组器生成参数。 如果它不能从接收到的XML字符串中生成这些对象,则它们显然无效,并且将引发异常。
tl; dr-是的,您可以验证模式,但这可能不值得。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.