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

3
我正在开发一个应用程序的插件。这些插件基本上是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或通过客户端配置[Jersey JSON Documentation],我就可以做到这一点。
不幸的是,由于插件体系结构,我无法访问这些方法。
是否有其他方法可以注册诸如Jackson之类的提供程序?
1个回答

3
您可以使用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;
    }
}

更多信息


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接