在 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 提供程序由服务器配置。对于 MOXy 附带的 Glassfish,我目睹了同样的空值问题。尚未检查,但猜测答案是尽可能在应用程序服务器级别配置 JAXB。