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.
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
<!-- 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>
</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
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