Я создал XML-схему, аннотируя существующий класс модели домена Java, теперь, когда я пытаюсь использовать JAXB для отмены маршалинга представления, полученного в моем веб-сервисе рестлета, я получаю массу ошибок независимо от того, что я пытаюсь , Я новичок как в рестлетах, так и в JAXB, поэтому указание мне в направлении приличного примера использования обоих было бы полезно, только один, который мне удалось найти, был здесь: Пример
Мои ошибки:
Если я попытаюсь использовать restlet.ext.jaxb JaxbRepresentation:
@Override
public void acceptRepresentation(Representation representation)
throws ResourceException {
JaxbRepresentation<Order> jaxbRep = new JaxbRepresentation<Order>(representation, Order.class);
jaxbRep.setContextPath("com.package.service.domain");
Order order = null;
try {
order = jaxbRep.getObject();
}catch (IOException e) {
...
}
из этого я получаю
java.io.IOException: Unable to unmarshal the XML representation.Unable to locate unmarshaller.
исключение на jaxbRep.getObject()
Так что я также попробовал другой подход, чтобы увидеть, если это имеет значение, вместо этого используя следующий код:
@Override
public void acceptRepresentation(Representation representation)
throws ResourceException {
try{
JAXBContext context = JAXBContext.newInstance(Order.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
Order order = (Order) unmarshaller.unmarshal(representation.getStream());
} catch( UnmarshalException ue ) {
...
} catch( JAXBException je ) {
...
} catch( IOException ioe ) {
...
}
Однако это также дает мне следующее исключение при вызове JAXBContext.newInstance.
java.lang.NoClassDefFoundError: javax/xml/bind/annotation/AccessorOrder
Заранее спасибо за любые советы.