Я работаю над веб-сервисом REST, написанным с использованием джерси, и пытаюсь вывести некоторый XML с разделами CDATA.Я понимаю, эталонная реализация JAXB не поддерживает это , поэтому я скачал MOXy EclipseLink и пытаюсь заставить работать аннотацию @XmlCDATA.выглядит так:
package com.me.entities;
@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD)
public class MyBean {
@XmlAttribute
private URI thumbnail;
@XmlElement(name="longdescription") @XmlCDATA
private String description;
public MyBean() { }
public final String getDescription() { return description; }
public final void setDescription(String d) { this.description = d; }
}
, и у меня есть файл jaxb.properties
в com/me/entities
вместе с файлами классов.Файл свойств содержит
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
.Я уверен, что он загружается успешно, так как, если я заменю имя класса фабрики какой-то ерундой, приложение сломается.Кроме того, явно маршалинг файла, создающего JAXBContext самостоятельно, работает нормально, поэтому проблема, похоже, связана с трикотажем.Согласно this мои настройки в порядке, но когда мой ресурс jersey возвращает экземпляр MyBean
...
@GET @Produces(MediaType.TEXT_XML)
public MyBean getMyBean() {
MyBean b = new MyBean();
b.setDescription("Some blurb plenty of invalid chars like <<< && >>>");
return b;
}
, то, что я получаю, не имеет CDATA, но выглядит как
<?xml version="1.0" encoding="UTF-8"?>
<info><longdescription>Some blurb plenty of invalid chars like <<< && >>></longdescription></info>
Что я делаю не так?