我目前正在开发一个开发一些Web服务的项目,我们选择Apache CXF作为首选技术。我们正在使用契约最后的方法(我们正在编写我们的服务并允许CXF为我们生成wsdl。)虽然我们已经能够使用Java-WS注释来根据需要设置某些字段,但我们无法找出如何对wsdl中的字符串元素强加字符限制。虽然这不是一个大问题(我们与我们正在合作的供应商非常接近,所以一个随意的协议,不让我们的请求超过这个长度已经足够了),我们很好奇有没有一种方法。
有没有办法让CFX对输入字符串施加20个字符的限制?
答案 0 :(得分: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
答案 1 :(得分:0)
当你对webservice进行自下而上的方法时(例如,首先是impl,稍后是WSDL),你对web服务引擎的态度是对数据类型的限制。
但是如果你通过自上而下的方法(首先是WSDL,后面的impl),你可以消除这些问题,但需要你知道如何开发WSDL并应用方面(限制)。
幸运的是,CXF支持两者,您可以尝试wsdl2java
。
还要记住,添加构面并不意味着它将由Web服务引擎强制执行。大多数引擎都忽略了它,但我不确定CXF。