Как использовать аннотации JAXB на стороне клиента для GWT?

Я хотел использовать аннотацию JaxB в своем классе следующим образом:

@XmlRootElement
public class ItemExtension implements Serializable {

Но GWT жалуется, когда я помещаю его на стороне клиента.

 [ERROR] Line 4: The import javax.xml.bind cannot be resolved
         [ERROR] Line 14: XmlRootElement cannot be resolved to a type

Есть ли способ обхода или я делаю что-то неправильно?

Ответ 1

У меня есть проект, который использует классы сущностей с аннотациями JPA и JAXB в клиентском коде GWT. См. Раздел "Переопределение реализации одного пакета с другим" в Документация GWT.

Скажем, ваш модуль находится в пакете com.example.app. Вам нужно будет воссоздать [1] все классы аннотации JAXB в новом пакете, в частности com.example.app.jre.java.xml.bind.annotation; в вашем XML файле модуля, затем добавьте <super-source path="jre" /> и вы установите.

Обратите внимание, что вам не нужно распространять файлы классов в этом пакете, они необходимы исключительно для компилятора GWT.

[1]: вы можете скопировать их и отредактировать все ссылки на пакеты.

Ответ 3

Я использовал эту библиотеку для обработки jaxb из-за клиента GWT

http://code.google.com/p/gwtjaxb/

Это не полный генератор JAXB, но он охватывает все, что мне нужно.

Ответ 4

Здесь вы можете найти жизнеспособное решение: GWT с JPA

Ответ 5

Я смог решить свои проблемы с компилятором GWT, исключив сгенерированный объект JAXB ObjectFactory из источника в модуле GWT XML:

<source path="model">
    <exclude name="**/ObjectFactory.*" />
</source>