我正在使用jax-ws和apache cxf开发Web服务,并使用代码优先方法。我想在我的服务中启用模式验证。为此,我已将cxf配置文件配置如下
<jaxws:endpoint id="testService"
implementorClass="com.test.impl.TestServiceImpl"
implementor="#testServiceImpl"
address="/testService">
<jaxws:serviceFactory>
<ref bean="jaxws-and-aegis-service-factory"/>
</jaxws:serviceFactory>
<jaxws:properties>
<entry key="schema-validation-enabled" value="true"/>
</jaxws:properties>
</jaxws:endpoint>
Service,
@WebService
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT,use=SOAPBinding.Use.LITERAL)
public interface TestService {
@WebMethod
String test(MyVo myVo) ;
}
MyVo,
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "MyVo")
public class MyVo {
@XmlElement(name = "name", required = true)
private String name;
............. // getter and setter
}
但是在部署服务后,wsdl看起来像
<xsd:complexType name="MyVo">
<xsd:sequence>
<xsd:element minOccurs="0" name="name" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
根据文档,minOccurs应为1(因为required = true)。
此外,我可以在MyVo对象中设置名称属性而无需调用服务。服务器没有错误。
我在jre \ lib文件夹和jdk \ lib文件夹中创建了一个已认可的目录,并将jaxb-api-2.2.jar和jaxws-api-2.2.1.jar放在那里。仍面临同样的问题。我使用的是jdk1.6.0_11。
由于
请指教。