我目前正在进行一个开发web服务的项目,我们选择了Apache CXF作为首选技术。我们正在使用一种契约-最后方法(我们正在对我们的服务进行编码,并允许CXF为我们生成wsdl )。虽然我们能够使用Java-WS注解根据需要设置某些字段,但我们无法弄清楚如何对wsdl中的字符串元素施加字符限制。虽然这并不是什么大的交易(我们与我们合作的供应商关系相当密切,所以暂时达成一个临时协议,不让我们收到的请求超过上述长度就足够了),但我们好奇的是,有一种方法可以做到这一点。
有没有办法用CFX对输入字符串施加类似于20个字符的限制?
发布于 2013-04-04 03:53:24
这不是JAXB提供的东西。但是,有一个项目已经派生了jaxb-ri,它添加了对此的支持:
https://github.com/whummer/jaxb-facets
如果不需要在WSDL中反映facet,那么只需将验证作为JAXB的setter方法的一部分进行即可。
setName(String s) {
if (s.length() > 20) thrown new Exception(....);
name = s;
}在解组之后,JAXB bean还可以响应一些事件,您可以在这些事件中进行验证。请参阅javadoc:http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.html中的afterUnmarshall描述
发布于 2013-04-04 06:33:10
当你对webservice采取自下而上的方法时(即先执行,再执行WSDL ),你就会受到When服务引擎对数据类型的限制。
但是,如果您使用自顶向下的方法(首先使用WSDL,然后执行),则可以消除此类问题,但需要知道如何开发WSDL和应用方面(限制)。
幸运的是,CXF两者都支持,您可以尝试一下wsdl2java。
还要记住,添加一个facet并不意味着它将由the服务引擎强制执行。大多数引擎只是忽略它,尽管我对CXF不是很确定。
https://stackoverflow.com/questions/15796429
复制相似问题