@WebParam的@XmlElement(required = true)不起作用
我正在使用JAX-WS构建Web服务。 我有一个奇怪的问题,@ @XmlElement(required=true)
的注释@XmlElement(required=true)
在某些@WebService
类中有效,但在其他一些类中不起作用。
我在两个@WebService
类中有非常相似的代码。 什么可能导致这个问题? 参数类型还是实体类?
编辑:添加示例代码
我有两个Web服务:
@WebService(name = "ClubMemberPortType", serviceName = "ClubMemberService", portName = "ClubMemberSoapPort", targetNamespace = "http://club.com/api/ws") public class ClubMemberWS { @WebMethod(operationName = "findClubMembersByClubId", action = "urn:findClubMembersByClubId") @WebResult(name = "club_membership") public List findClubMembershipsByClubId(@XmlElement(required=true) @WebParam(name = "club_id") String clubId, @WebParam(name = "status") StatusEnum status){ ... }}
和
@WebService(name = "ClubPortType", serviceName = "ClubService", portName = "ClubSoapPort", targetNamespace = "http://club.com/api/ws") public class ClubWS { @WebMethod(operationName = "findClubByClubId", action = "urn:findClubByClubId") @WebResult(name = "club") public Club findClubByClubId(@XmlElement(required=true) @WebParam(name = "club_id") String clubId) { ... }}
生成的第一个Web方法的架构是:
? ?
为第二个Web方法生成的架构是:
?
所以第一个工作正常,第二个工作不起作用。 这怎么可能? 🙁
在@WebParam
解决我的类似问题后添加@XmlElement(required=true,nillable=false)
。 使用CXF 2.7.9。 没试过先把@XmlElement
,难道就这么简单吗?
我有同样的问题。 我找到了使用单独的类作为服务方法参数的解决方案。
例如
@XmlType(name="SampleRequestType", propOrder={"title", "ref"}) public class SampleRequest { @XmlElement(name="title", required=false) private String title; @XmlElement(name="ref", required=true) private String ref; ...
网络的方法
@WebMethod public String sampleMethod(@WebParam(name = "params") SampleRequest params) {
也许这会有所帮助
如果您收到以下错误消息:“ 此位置不允许注释@XmlElement ”,您可能正在使用错误的import语句。
将其更改为:
import javax.xml.bind.annotation.XmlElement;
由于Eclipse建议将另一个软件包作为第一个选项,因此这是一个非常常见的错误。
您尝试更改@WebParam和@XmlElement中的顺序? 实际上我有一个WS whit这个:
public Persona consultarPersona(@WebParam(name = "cedula") @XmlElement(required=true, nillable=false, name="cedula", namespace="cedulaParam") String cedula)
描述生成的是:
和架构定义:
而已!!
- Spring,使用@Configuration和@Bean注释
- @ParametersAreNonnullByDefault是否也适用于方法返回值?
- 在IntelliJ和Eclipse开发人员都在工作的项目中使用@NotNull
- inheritance类注释
- java.lang.IllegalStateException:BindingResult和bean名称’category’的普通目标对象都不能作为请求属性使用
- 我可以使用Java注释来定义编译时间检查吗?
- Spring:构造函数注入具有基于注释的配置的原始值(属性)
- AnnotationConfigApplicationContext和父上下文
- :: 0处的错误无法找到引用的切入点注释