使用WebParam不允许使用XmlElement注释

时间:2011-11-21 11:56:43

标签: java xml web-services jax-ws

我在webservice中有一个方法,具有以下签名:

@WebResult(name="purchaseId") public int CreatePurchase(
            @XmlElement(required=true)
            @WebParam(name = "item") String item {
  ...
}

在我看来(根据我发现的信息),这个应该工作。不幸的是,我在编译时收到以下错误消息:

The annotation @XmlElement is disallowed for this location

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:33)

JAX-B默认包含在JDK中。特定JDK附带的版本几乎不像JAX-B本身那样频繁更新。 JDK(1.6)附带的当前版本是JAX-B 2.1.10(记录为here)。

@XmlElement仅允许在以JAX-B 2.2开头的方法参数

当Java加载库时,它会加载JDK附带的库,然后加载类路径上的库。向Java 7上传可以解决您的问题。如果您无法升级到Java 7,还有一个告诉Java您想要使用更新库的过程。这些被称为“认可”库,您必须将库放在同一个库中文件夹结构为JDK本身。该过程描述为here

答案 1 :(得分:1)

如果您收到以下错误消息:" 此位置不允许使用注释@XmlElement ",您可能会使用错误的导入语句

将其更改为:

import javax.xml.bind.annotation.XmlElement;

由于Eclipse建议将另一个软件包作为第一个选项,因此这是一个非常常见的错误。