对Apache CXF创建的Wsdl施加限制

对Apache CXF创建的Wsdl施加限制,apache,jakarta-ee,cxf,Apache,Jakarta Ee,Cxf,我目前正在从事一个开发一些web服务的项目,我们选择ApacheCXF作为首选技术。我们使用的是契约最后一种方法(我们正在对服务进行编码,并允许CXF为我们生成wsdl)。虽然我们能够使用Java WS注释根据需要设置某些字段,但我们无法找出如何对wsdl中的字符串元素施加字符限制。虽然这不是一个大问题(我们与我们合作的供应商关系相当密切,因此临时达成协议,不让我们收到的请求超过所述长度就足够了),但我们很好奇是否有办法做到这一点 有没有一种方法可以使用CFX对输入字符串施加20个字符的限制?这

我目前正在从事一个开发一些web服务的项目,我们选择ApacheCXF作为首选技术。我们使用的是契约最后一种方法(我们正在对服务进行编码,并允许CXF为我们生成wsdl)。虽然我们能够使用Java WS注释根据需要设置某些字段,但我们无法找出如何对wsdl中的字符串元素施加字符限制。虽然这不是一个大问题(我们与我们合作的供应商关系相当密切,因此临时达成协议,不让我们收到的请求超过所述长度就足够了),但我们很好奇是否有办法做到这一点


有没有一种方法可以使用CFX对输入字符串施加20个字符的限制?

这不是JAXB提供的。但是,有一个项目派生了jaxb ri,它增加了对这一点的支持:

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

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

还有一些事件是jaxbbean在解组后可以响应的,您可以在其中验证内容。请参阅javadoc中的后解组说明:

当您对Web服务执行自底向上的方法(即先执行impl,后执行WSDL)时,您将处于Web服务引擎对数据类型限制的支配地位

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

幸运的是,CXF两者都支持,您可以尝试一下


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

在生成过程中向WSDL添加方面不是问题吗?Daniel,谢谢你提供的信息。如果我们有时间,我们将研究那个分叉的项目。再说一次,这不是一个大问题。我和我的团队中的其他开发人员都是CXF新手(像我这样的一些人对Web服务一般来说是完全陌生的),我们只是好奇如何做到这一点。