以编程方式为JAX-RS注册POJO支持或JSON提供程序

时间:2013-01-31 10:29:41

标签: java json jersey jackson jax-rs

我正在为应用程序开发插件。插件基本上是JAX-RS端点。它们被打包并部署到运行Jetty并注册它们的应用程序的类路径中。例如:

@GET
@Path("/{id}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Product get(@PathParam("id") String id) {
    return Product.lookup(id);
}

能够通过JAX-RS返回任意POJO,我想启用POJOMapping或显式注册像Jackson Provider这样的东西。

我知道如果我可以访问web.xml或通过Client配置[Jersey JSON Documentation],我就可以这样做。

不幸的是,鉴于插件架构,我无法访问这些方法。

有没有办法以任何其他方式注册杰克逊等提供商?

1 个答案:

答案 0 :(得分:2)

您可以使用JAX-RS Application类作为应用程序的一部分来注册JSON绑定提供程序。下面是注册EclipseLink MOXy作为JSON提供程序的示例。

package org.example;

import java.util.*;
import javax.ws.rs.core.Application;
import org.eclipse.persistence.jaxb.rs.MOXyJsonProvider;

public class CustomerApplication  extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        HashSet<Class<?>> set = new HashSet<Class<?>>(2);
        set.add(MOXyJsonProvider.class);
        set.add(CustomerService.class);
        return set;
    }
}

了解更多信息