在一些WebServices客户端的实现中(比如Delphi7),可能是由于实现的细节问题(没有实现对wsdl的完全支持),输入输出的参数名称必须是在namespace中限定的。CXF发布的WebServices,默认情况下却是unquailiied的参数名,造成WebServices访问错误。
解决办法,是在CXF发布的服务接口中涉及到的类所在的java package文件夹下,加入package-info.java,例子:
d:\projects\example1\src\com.mypro.service\package-info.java:
@javax.xml.bind.annotation.XmlSchema(//namespace = "http://com.mypro.service",
attributeFormDefault=javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
elementFormDefault=javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package demo.dao;
这样,CXF发布出来的wsdl,默认设置就变成了qualified,客户端就能够正常访问WebServices了。

本文介绍了如何通过修改CXF发布的WebServices默认参数名从unqualified到qualified来解决某些客户端(如Delphi7)因参数命名问题导致的访问错误。通过在服务接口所在包下创建package-info.java文件并设置相应的@XmlSchema注解属性,可以有效解决这一问题。
4767





