1

我目前正在开发一些 Web 服务的项目,我们选择了 Apache CXF 作为首选技术。我们正在使用最后契约的方法(我们正在编写我们的服务并允许 CXF 为我们生成 wsdl。)虽然我们已经能够使用 Java-WS 注释来根据需要设置某些字段,但我们无法弄清楚如何对 wsdl 中的字符串元素施加字符限制。虽然这不是什么大不了的事(我们与我们正在合作的供应商相当接近,所以暂时同意不让向我们提出的请求超过所说的长度就足够了),我们很好奇是否有一种方法来做到这一点。

有没有办法使用 CFX 对输入字符串施加 20 个字符的限制?

4

2 回答 2

2

这不是 JAXB 提供的东西。但是,有一个分叉了 jaxb-ri 的项目添加了对此的支持:

https://github.com/whummer/jaxb-facets

如果您不需要在 WSDL 中反映方面,则可以将验证作为 JAXB bean 的 setter 方法的一部分进行。

setName(String s) {
   if (s.length() > 20) thrown new Exception(....);
   name = s;
}

还有一些事件是 JAXB bean 在解组之后可以响应的,您可以在其中验证事物。请参阅 javadoc 中的 afterUnmarshall 描述:http: //docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.html

于 2013-04-03T19:53:24.027 回答
0

当您对 web 服务执行自下而上的方法时(即首先 impl,然后是 WSDL),您将受到 web 服务引擎对数据类型的限制的摆布。

但是,如果您采用自顶向下的方法(首先是 WSDL,然后是 impl),您可以消除这类问题,但需要您知道如何开发 WSDL 和应用方面(限制)。

幸运的是,CXF 两者都支持,你可以试试wsdl2java.

还要记住,添加一个方面并不意味着它将由 web 服务引擎强制执行。大多数引擎只是忽略它,尽管我不确定 CXF。

于 2013-04-03T22:33:09.747 回答