将Swagger与JAX-RS和JAXB集成需要帮助

将Swagger与JAX-RS和JAXB集成需要帮助,jaxb,jersey,jax-rs,swagger,Jaxb,Jersey,Jax Rs,Swagger,我正在使用JAX-RS和JAXB开发RESTAPI。我还想使用Swagger为api生成文档。我在这里遵循了这个例子。因此,我在web.xml的init参数中添加了com.wordnik.swagger.jaxrs.listing,如下所示: <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value&

我正在使用JAX-RS和JAXB开发RESTAPI。我还想使用Swagger为api生成文档。我在这里遵循了这个例子。因此,我在web.xml的init参数中添加了com.wordnik.swagger.jaxrs.listing,如下所示:

<init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.api.resources;com.api;com.wordnik.swagger.jaxrs.listing;</param-value>
</init-param>
public JAXBContextProvider() throws JAXBException {
    this.context = new JSONJAXBContext(JSONConfiguration.natural().build(),
            "com.api.model.impl.v1:com.api.resource.framework:com.wordnik.swagger.core");
    }
我通过将com.wordnik.swagger.core添加到自定义JAXBContextProvider中修复了它,如下所示:

<init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.api.resources;com.api;com.wordnik.swagger.jaxrs.listing;</param-value>
</init-param>
public JAXBContextProvider() throws JAXBException {
    this.context = new JSONJAXBContext(JSONConfiguration.natural().build(),
            "com.api.model.impl.v1:com.api.resource.framework:com.wordnik.swagger.core");
    }
这导致了另一个错误:

SEVERE: The provider class, class comapi.JAXBContextProvider, could not be instantiated. Processing will continue but the class will not be utilized
javax.xml.bind.JAXBException: "com.wordnik.swagger.core.Documentation" doesnt contain ObjectFactory.class or jaxb.index

我一直在使用jaxb.index文件来保持带有jaxb注释的类的上下文意识,但是在包含文档类的swagger包中没有jaxb.index文件。在将Swagger与JAXB和JAX-RS集成时,有人遇到过类似的问题吗?

结果表明,除了已经创建的JSONJAXBContext之外,我还需要创建JAXBContext

我补充说

this.swaggerJAXBcontext = JAXBContext.newInstance(com.wordnik.swagger.core.Documentation.class);
to构造函数和此to getContext(类类型)方法: