“Swagger + Servlet + jboss” does not listed the defined REST APIs

51 views
Skip to first unread message

dgm

unread,
Jun 16, 2017, 2:20:06 PM6/16/17
to Swagger, Dipankaj Medhi
Hi

As discussed earlier (http://swagger.io/irc/), I am having as issue related to “Swagger + Servlet + jboss” does not listed my APIs. It’s only display {"apiVersion":"1.0.0","swaggerVersion":"1.2"}. whenever I am using swagger-servlet_2.10-1.3.13 but whenever I change it to swagger-servlet_1.5.13, nothing is returned by swagger doc API. 

Please note that, I am using the same given https://github.com/swagger-api/swagger-samples/tree/master/java/java-servlet ith some little veriation. 



My pom

                 <dependency>
                                    <groupId>io.swagger</groupId>
                                    <artifactId>swagger-servlet</artifactId>
                                    <version>1.5.13</version>
                                </dependency>
                                <dependency>
                                    <groupId>ch.qos.logback</groupId>
                                    <artifactId>logback-classic</artifactId>
                                    <version>1.0.1</version>
                                </dependency>
                                <dependency>
                                    <groupId>javax.servlet</groupId>
                                    <artifactId>servlet-api</artifactId>
                                    <version>2.3</version>
                                </dependency>
                                <dependency>
                                    <groupId>io.swagger</groupId>
                                    <artifactId>swagger-core</artifactId>
                                    <version>1.5.13</version>
                                </dependency>
                                <dependency>
                                    <groupId>io.swagger</groupId>
                                    <artifactId>swagger-models</artifactId>
                                    <version>1.5.13</version>
                                </dependency>
                                <dependency>
                                    <groupId>org.apache.commons</groupId>
                                    <artifactId>commons-lang3</artifactId>
                                    <version>3.4</version>
                                </dependency>

My web.xml
<web-app version="3.0" xmlns=http://java.sun.com/xml/ns/javaee……">

<!--     swagger servlet reader -->
    <servlet>
        <servlet-name>DefaultServletConfig</servlet-name>
        <servlet-class>io.swagger.servlet.config.DefaultServletConfig</servlet-class>
        <init-param>
            <param-name>swagger.resource.package</param-name>
            <param-value>com.topo.rest.resource</param-value>
        </init-param>
        <init-param>
            <param-name>swagger.api.basepath</param-name>
            <param-value>https://localhost:8443/api/topo/v1</param-value>
        </init-param>
        <init-param>
            <param-name>api.version</param-name>
            <param-value>1.0.0</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>

    <!-- swagger api declaration -->
    <servlet>
        <servlet-name>ApiDeclarationServlet</servlet-name>
        <servlet-class>io.swagger.servlet.listing.ApiDeclarationServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ApiDeclarationServlet</servlet-name>
        <url-pattern>/api-doc/*</url-pattern>
    </servlet-mapping>
</web-app>


Please note that, I am deploying it in jboss 7 server with         <jboss-web><context-root>/api/topo/v1</context-root></jboss-web>


The servlet, 

package com.topo.rest.resource;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@Api(value = "/test/", description = "gets some data from a servlet")
@WebServlet(urlPatterns = {"/*"})
public class TopoResourceServlet extends HttpServlet {

    public TopoResourceServlet() {
        super();
    }

    private static final long serialVersionUID = 1L;

    @ApiOperation(httpMethod = "GET", value = "Resource to get a user")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "name", value = "User's name", required = true, dataType = "string", paramType = "query"),
            @ApiImplicitParam(name = "email", value = "User's email", required = true, dataType = "string", paramType = "query"),
    })
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) {
        response.setStatus(HttpServletResponse.SC_OK);
        try {
            response.getWriter().println("Servlet Response");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

But, whenever I access the api-docs, using
          HttpResponse responseGet = get ("https://localhost:8443/api/topo/v1/api-docs"); 
I am getting the REST response only ("Servlet Response") not the API doc.



Interstingly, for older swagger-servlet_2.10-1.3.13.jar (and related dependency), I am getting the following

{"apiVersion":"1.0.0","swaggerVersion":"1.2"}.

without my rest API. 


Any help will be appreciated.

Regards





2sb...@gmail.com

unread,
Mar 15, 2018, 1:13:55 PM3/15/18
to Swagger
Strange that no replies for these request.... Not an active group :(
Reply all
Reply to author
Forward
0 new messages