【问题标题】:How to use default Jersey JAXB MessageBodyWriter for XML mixed with custom providers?如何将默认的 Jersey JAXB MessageBodyWriter 用于与自定义提供程序混合的 XML?
【发布时间】:2017-02-24 21:50:28
【问题描述】:

我似乎无法让基于 Jersey/Jetty 的服务器使用 XML 的默认 JAXB MessageBodyWriter。我收到此错误:

找不到媒体类型=application/xml、类型=...的MessageBodyWriter

我有一个如下所示的应用程序类:

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

import cmb.agent.engine.resource.AgentCertificateResource;
import cmb.agent.engine.resource.ProfileResource;
import cmb.agent.engine.servlet.SessionRequestFilter;

@ApplicationPath("/")
public class AgentExample extends Application {
    private Set<Object>                         singletons = new HashSet<Object>();
    private Set<Class<?>>                       perRequestServices = new HashSet<>();

    public AgentExample() {
        perRequestServices.add(ProfileResource.class);
        perRequestServices.add(AgentCertificateResource.class);
        singletons.add(new NotificationXmlMarshaller());
        singletons.add(new SessionRequestFilter());
    }

    @Override
    public Set<Class<?>> getClasses() {
        return perRequestServices;
    }

    @Override
    public Set<Object> getSingletons() {
        return singletons;
    }
}

在上面的示例中,NotificationXmlMarshaller 是我的自定义编组器之一,但是在尝试编组任何其他实体类型时会发生错误。

我的理解是当 getClasses() 和 getSingletons() 返回非空值时,所有的默认值都会被忽略。所以我假设我正在禁用默认的 JAXB xml marshaller。

我的问题是如何使用我自己的自定义编组器,但对其他所有内容使用默认的 JAXB 编组器?

这是我对这个项目的球衣的 gradle 依赖项:

compile("org.glassfish.jersey.containers:jersey-container-servlet:$jerseyGlassfishVersion")
compile("org.glassfish.jersey.media:jersey-media-jaxb:$jerseyGlassfishVersion")
compile("org.glassfish.jersey.core:jersey-client:$jerseyGlassfishVersion")

球衣版本 2.25。

【问题讨论】:

    标签: java xml rest jaxb


    【解决方案1】:

    我终于发现我的实体类中有一个重大错误。我忘记了 @XmlRootElement 注释。叹。 :(

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 1970-01-01
      • 2016-09-17
      • 1970-01-01
      • 2015-08-05
      相关资源
      最近更新 更多