繁体   English   中英

对由Apache CXF创建的Wsdl施加限制

[英]Imposing limits on Wsdl created by Apache CXF

我目前正在从事开发一些Web服务的项目,并且我们选择了Apache CXF作为首选技术。 我们正在使用后契约的方法(我们正在对服务进行编码,并允许CXF为我们生成wsdl。)虽然我们已经能够使用Java-WS批注根据需要设置某些字段,但是我们无法弄清楚如何对wsdl中的字符串元素施加字符限制。 虽然这不是什么大问题(我们与正在与之合作的供应商关系相当密切,所以暂时达成一项协议,即不要让收到的请求超出上述长度就足够了),但我们很好奇是否存在一种做到这一点的方法。

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

这不是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

当您对Web服务进行自下而上的方法时(例如,首先实现,之后才是WSDL),您会受到Web服务引擎对数据类型的限制的束缚。

但是,如果您采用自上而下的方法(首先使用WSDL,之后引入),则可以消除此类问题,但是需要您知道如何开发WSDL和应用构面(限制)。

幸运的是,CXF支持这两种方式,您可以尝试wsdl2java

还要记住,添加构面并不意味着它将由Webservice引擎强制实施。 尽管我不确定CXF,但大多数引擎都忽略了它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM