В MOXy вы можете указать, как jsonProvider должен выполнять свою работу для JAXB.
Поэтому, когда вы выполняете JAX-RS, добавьте следующий код в ваш класс, полученный из Application
Я использовал этот код на Tomcat 7 с хорошими результатами. (eclipselink 2.4.1)
@ApplicationPath("/rest")
public class RestApplication extends Application
{
...
public Set< Object> getSingletons()
{
HashSet<Object> set = new HashSet<Object>(1);
set.add( newMoxyJsonProvider());
return set;
}
public static MOXyJsonProvider newMoxyJsonProvider()
{
MOXyJsonProvider result = new MOXyJsonProvider();
//result.setAttributePrefix("@");
result.setFormattedOutput( false);
result.setIncludeRoot( false);
result.setMarshalEmptyCollections( true);
//result.setValueWrapper("$");
return result;
}
В Glassfish 3.1.2 и WAS 8.5, однако, newMoxyJsonProvider () не нужен, но тогда провайдер JAXB настраивается сервером.
В случае Glassfish, который поставляется с MOXy, у меня были те же проблемы с нулевыми значениями.
Еще не проверял, но думаю, что ответ в настройке JAXB на уровне сервера приложений, если это вообще возможно.