指示属性需求级别的Java Web服务
我已经在我的应用程序中实现了web服务。当我想使用Soap UI通过SOA上的web服务将对象发送到我的服务器时,我得到如下结果:指示属性需求级别的Java Web服务,java,xml,web-services,Java,Xml,Web Services,我已经在我的应用程序中实现了web服务。当我想使用Soap UI通过SOA上的web服务将对象发送到我的服务器时,我得到如下结果: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:impl="http://impl.arg.lou.com/"> <soapenv:Header/> <soapenv:Body> <im
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:impl="http://impl.arg.lou.com/">
<soapenv:Header/>
<soapenv:Body>
<impl:addStudent>
<!--Optional:-->
<student>
<!--Optional:-->
<name>?</name>
</student>
</impl:addStudent>
</soapenv:Body>
</soapenv:Envelope>
<jaxws:endpoint id="myService" ...>
<jaxws:properties>
<entry key="schema-validation-enabled" value="true" />
...
</jaxws:properties>
...
</jaxws:endpoint>
?
我不希望名称字段是可选的,它应该是必填字段。我怎么做
我使用apachecxf
需求级别链接:在web服务定义中,您有一个类型部分,用于定义消息的XML模式。在该定义中,您可以设置多个约束,如“必填字段” 示例:
<wsdl:definitions name="myService" ...>
<wsdl:types>
<xs:schema version="1.0" targetNamespace="myNameSpace" xmlns:tns="myNameSpace">
<xs:complexType name="studentType">
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
<xs:element name="student" nillable="false" type="tns:studentType"/>
</xs:schema>
</wsdl:types>
...
</wsdl:definitions>
...
现在,如果不在apache CXF配置中激活模式验证,则不会在服务器端对此进行验证,如下所示:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:impl="http://impl.arg.lou.com/">
<soapenv:Header/>
<soapenv:Body>
<impl:addStudent>
<!--Optional:-->
<student>
<!--Optional:-->
<name>?</name>
</student>
</impl:addStudent>
</soapenv:Body>
</soapenv:Envelope>
<jaxws:endpoint id="myService" ...>
<jaxws:properties>
<entry key="schema-validation-enabled" value="true" />
...
</jaxws:properties>
...
</jaxws:endpoint>
...
...
PS:soapui使用目标web服务的XML模式生成默认请求。如果XML架构没有
use=“required”
或nillable=“false”
它将在元素上添加一条
注释您应该更改问题的标题:您要求对web服务消息添加限制,对吗?我可以在Java类定义变量之前使用注释吗?如果您使用JAXWS和JAXB的“第一个代码”方法,您可以使用JAXB注释,如@xmlement(nillable=false)
和@xmltattribute(required=false)