Аннотации XmlElement не разрешены с помощью WebParam
У меня есть метод внутри webservice со следующей подписью:
@WebResult(name="purchaseId") public int CreatePurchase(
@XmlElement(required=true)
@WebParam(name = "item") String item {
...
}
Мне кажется (на основе какой информации я нашел), что это должно работать. К сожалению, я получаю следующее сообщение об ошибке при компиляции:
The annotation @XmlElement is disallowed for this location
Кто-нибудь знает, как решить проблему?
Ответы
Ответ 1
JAX-B включен по умолчанию в JDK. Версия, которая поставляется с конкретным JDK, не обновляется почти так же часто, как JAX-B. Текущей версией, поставляемой с JDK (1.6), является JAX-B 2.1.10 (документировано здесь).
@XmlElement разрешен только для параметров метода, начиная с JAX-B 2.2
Когда Java загружает libaries, он загружает библиотеки, которые поставляются вместе с JDK, прежде чем загружать библиотеки, находящиеся в пути к классам. Upgrdading для Java 7 исправит вашу проблему. Существует также процесс передачи Java, что вы хотите использовать более современную библиотеку, если вы не можете перейти на Java 7. Они называются "одобренными" библиотеками, и вы должны поместить библиотеку в одну и ту же как сама JDK. Этот процесс описан здесь.
Ответ 2
При появлении следующего сообщения об ошибке: " аннотация @XmlElement запрещена для этого местоположения), возможно, вы используете неправильный оператор импорта.
Измените его на:
import javax.xml.bind.annotation.XmlElement;
Поскольку Eclipse предлагает другой пакет в качестве первого варианта, это очень распространенная ошибка.