Swagger 与Resteasy交互的招摇过市不列出内容api

Swagger 与Resteasy交互的招摇过市不列出内容api,swagger,resteasy,Swagger,Resteasy,我们正试图让Swagger与我们的resteasy应用程序交互,以便api在Swagger页面上列出。我们在Java资源中使用注释,而不是yaml/json文件。我们希望内容是“动态的”或直接来自资源页面 当我们打开“招摇过市”页面时,会收到消息“fetching resource list://10.155.63.136/nodeMgmt”。当我使用firebug呈现页面时,我看到页面本身(index.html)被“输入”到内容中 我想我已经很接近了,但是我错过了一两件小事。我用这个例子作为我

我们正试图让Swagger与我们的resteasy应用程序交互,以便api在Swagger页面上列出。我们在Java资源中使用注释,而不是yaml/json文件。我们希望内容是“动态的”或直接来自资源页面

当我们打开“招摇过市”页面时,会收到消息“fetching resource list://10.155.63.136/nodeMgmt”。当我使用firebug呈现页面时,我看到页面本身(index.html)被“输入”到内容中

我想我已经很接近了,但是我错过了一两件小事。我用这个例子作为我所做工作的指南:

同样,问题是resteasyapi中的内容没有被输入到swagger用户界面中。我的例子中的url是

我们使用的是JBoss 6.4、NoSpring、Resteasy 3.0.7、Swagger jaxrs 1.5.9

非常感谢您的帮助

Index.html

  <script type="text/javascript">
    $(function () {
        window.swaggerUi = new SwaggerUi({
        url: "/nodeMgmt",
        dom_id: "swagger-ui-container",
        supportedSubmitMethods: ['get', 'post', 'put', 'delete'],
        onComplete: function(swaggerApi, swaggerUi){
            log("Loaded SwaggerUI");

            $('pre code').each(function(i, e) {
                hljs.highlightBlock(e)
            });
        },
        onFailure: function(data) {
            log("Unable to Load SwaggerUI");
        },
        docExpansion: "none"
    });
resource.java

@Path("/")
@Api(value = "/", description = "Node operations", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public class NodeMgmtRestService {
    private static final Logger log = Logger.getLogger(NodeMgmtRestService.class);

    private static final String NODES = "nodes";
    private static final String ID = "id";


    NodeMgmtServiceProvider nodeMgmtServiceProvider = new NodeMgmtServiceProvider();

    Service nodeMgmtService;


    @GET
    @Path("/{version}")
    @Produces(MediaType.APPLICATION_JSON)
    @ApiOperation(value = "Get all nodes", notes = "Returns a list of node", response = String.class, responseContainer="List")
    public Response getNodes(
            @ApiParam(value = "Version of api (1.0)", required = true) @PathParam("version") String version,
            @ApiParam(value = "Filter by ", required = true) @QueryParam("filterParam") String filterParam,
            @ApiParam(value = "Filter value ", required = true) @QueryParam("filterValue") String filterValue) {
        List<Node> nodeList = new ArrayList<Node>();
        List<Object> nodeJsonList = new ArrayList<Object>();
        Map<String, List<Object>> nodeJsonMap = new HashMap<String, List<Object>>();
        ObjectMapper objectMapper = new ObjectMapper();
        Map<String, String> responseId = new HashMap<String, String>();
        JsonNodeDao jsonNodeDao = new JsonNodeDao();
@ApplicationPath("")
public class NodeMgmtApplication extends SonusBaseRestApplication  {
    private static final Logger log = Logger.getLogger(NodeMgmtApplication.class);

    /**
     *  Constructor
     */
    public NodeMgmtApplication() {
        super();

        try {
            //TODO Swagger
            // Used for defining swagger
            BeanConfig beanConfig = new BeanConfig();
            beanConfig.setSchemes(new String[]{"http"});
            beanConfig.setHost("localhost:8080");
            beanConfig.setVersion("1.5.9");
            beanConfig.setBasePath("/nodeMgmt");
            beanConfig.setResourcePackage("com.sonus.ems.nodemgmt.web");
            //beanConfig.setPrettyPrint(true);
            beanConfig.setScan(true);

            addService(new NodeMgmtAuthorizationFilter());
            addService(new NodeMgmtRestService());

            // Swagger
            addService(new ApiListingResource());
            addService(new SwaggerSerializers());
        } catch (Exception e) {
            log.error("NodeAdminApplication: Could not instantiate singletons " + e);
        }
    }
@Path("/")
@Api(value = "/", description = "Node operations", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public class NodeMgmtRestService {
    private static final Logger log = Logger.getLogger(NodeMgmtRestService.class);

    private static final String NODES = "nodes";
    private static final String ID = "id";


    NodeMgmtServiceProvider nodeMgmtServiceProvider = new NodeMgmtServiceProvider();

    Service nodeMgmtService;


    @GET
    @Path("/{version}")
    @Produces(MediaType.APPLICATION_JSON)
    @ApiOperation(value = "Get all nodes", notes = "Returns a list of node", response = String.class, responseContainer="List")
    public Response getNodes(
            @ApiParam(value = "Version of api (1.0)", required = true) @PathParam("version") String version,
            @ApiParam(value = "Filter by ", required = true) @QueryParam("filterParam") String filterParam,
            @ApiParam(value = "Filter value ", required = true) @QueryParam("filterValue") String filterValue) {
        List<Node> nodeList = new ArrayList<Node>();
        List<Object> nodeJsonList = new ArrayList<Object>();
        Map<String, List<Object>> nodeJsonMap = new HashMap<String, List<Object>>();
        ObjectMapper objectMapper = new ObjectMapper();
        Map<String, String> responseId = new HashMap<String, String>();
        JsonNodeDao jsonNodeDao = new JsonNodeDao();
public class ApiOriginFilter implements Filter {

    @Override
      public void doFilter(
              ServletRequest request, 
              ServletResponse response,
              FilterChain chain) throws IOException, ServletException {
        HttpServletResponse res = (HttpServletResponse) response;

        // Add access to the header 
        res.addHeader("Access-Control-Allow-Origin", "*");
        res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, PATCH, OPTIONS");
        res.addHeader("Access-Control-Allow-Headers", "Content-Type, api_key, Authorization");
        //res.addHeader("Access-Control-Allow-Headers", "Origin, X-Atmosphere-tracking-id, X-Atmosphere-Framework, X-Cache-Date, Content-Type, api_key, Authorization, X-Atmosphere-Transport, x-requested-with, Total-Count, Total-Pages, Error-Message, *");
        //res.addHeader("Access-Control-Request-Headers", "Origin, X-Atmosphere-tracking-id, X-Atmosphere-Framework, X-Cache-Date, Content-Type, api_key, Authorization, X-Atmosphere-Transport, x-requested-with, Total-Count, Total-Pages, Error-Message,  *");

        chain.doFilter(request, response);
      }

      @Override
      public void destroy() {
      }

      @Override
      public void init(FilterConfig filterConfig) throws ServletException {
      }