public class ClassName extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
... some computation
}
}
I'd like to make some beautiful documentation using Swagger. But I can't do it! I read 100 times the quickstart guide for Java + Servlet but nothing. Here's what i did:
1) in my web.xml, i put all the initialization stuff. Here's the code
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>MyWebService</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- swagger servlet reader -->
<servlet>
<servlet-name>DefaultServletReaderConfig</servlet-name>
<servlet-class>com.wordnik.swagger.servlet.config.DefaultServletReaderConfig</servlet-class>
<init-param>
<param-name>swagger.resource.package</param-name>
<param-value>servlet.users</param-value>
</init-param>
<init-param>
<param-name>swagger.api.basepath</param-name>
<param-value>http://localhost:8080/ISellToYouRESTWebService</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>com.wordnik.swagger.servlet.listing.ApiDeclarationServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ApiDeclarationServlet</servlet-name>
<url-pattern>/api-docs/*</url-pattern>
</servlet-mapping>
<!-- other servlet declaration -->
</web-app>
@Api(value = "/sample/users", description = "gets some data from a servlet")
public class CreateUser extends HttpServlet{
private static final long serialVersionUID = 1L;
@ApiOperation(
value = "It's an operation",
notes = "something",
httpMethod = "GET")
@ApiParamsImplicit (value = { @ApiParamImplicit(name = "name", value = "The name of the user"),
@ApiParamImplicit(name = "surname", value = "The surname of the user") })
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
...
}
}
mag 15, 2014 7:19:28 PM org.apache.catalina.core.StandardService startInternal
Informazioni: Starting service Catalina
mag 15, 2014 7:19:28 PM org.apache.catalina.core.StandardEngine startInternal
Informazioni: Starting Servlet Engine: Apache Tomcat/7.0.52
mag 15, 2014 7:19:29 PM org.apache.catalina.core.ApplicationContext log
Informazioni: Marking servlet DefaultServletReaderConfig as unavailable
mag 15, 2014 7:19:29 PM org.apache.catalina.core.StandardContext loadOnStartup
Grave: Servlet /ISellToYouRESTWebService threw load() exception
java.lang.ClassNotFoundException: scala.ScalaObject
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2944)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1208)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:529)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:511)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:139)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1143)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5210)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5493)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
--
You received this message because you are subscribed to the Google Groups "Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggers...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>ProvaSwagger</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- swagger servlet reader -->
<servlet>
<servlet-name>DefaultServletReaderConfig</servlet-name>
<servlet-class>com.wordnik.swagger.servlet.config.DefaultServletReaderConfig</servlet-class>
<init-param>
<param-name>swagger.resource.package</param-name>
<param-value>com.wordnik.swagger.sample.servlet</param-value>
</init-param>
<init-param>
<param-name>swagger.api.basepath</param-name>
<param-value>http://localhost:8080/ProvaSwagger</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>com.wordnik.swagger.servlet.listing.ApiDeclarationServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ApiDeclarationServlet</servlet-name>
<url-pattern>/api-docs/*</url-pattern>
</servlet-mapping>
</web-app>
@Api(value = "/sample/users", description = "gets some data from a servlet")
public class Prova extends HttpServlet{
private static final long serialVersionUID = 1L;
@ApiOperation(
value = "Add a new pet to the store",
notes = "this adds pets nicely",
httpMethod = "GET")
@ApiImplicitParams(value = { @ApiImplicitParam(name = "name", value = "A name"),
@ApiImplicitParam(name = "surname", value = "A surname")})
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
}
}
{"apiVersion":"1.0.0","swaggerVersion":"1.2"}
<param-value>com.wordnik.swagger.sample.servlet</param-value>
The <param-value> needs to be the package of your servlet.
--
22:19:16.976 [http-bio-8080-exec-3] DEBUG org.reflections.Reflections - going to scan these urls:
file:/Volumes/Macintosh%20HD/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/ProvaSwagger/WEB-INF/classes/
22:19:17.069 [http-bio-8080-exec-3] INFO org.reflections.Reflections - Reflections took 91 ms to scan 1 urls, producing 2 keys and 4 values
22:19:17.123 [http-bio-8080-exec-3] DEBUG c.w.s.servlet.config.ServletReader - read routes from classes: /user, /show
22:19:17.129 [http-bio-8080-exec-3] DEBUG c.w.s.servlet.config.ServletReader - read routes from classes: /, createUser
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>OtherTry</groupId>
<artifactId>OtherTry</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-servlet_2.9.1</artifactId>
<version>1.3.0-RC3</version>
</dependency>
</dependencies>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>OtherTry</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- swagger servlet reader -->
<servlet>
<servlet-name>DefaultServletReaderConfig</servlet-name>
<servlet-class>com.wordnik.swagger.servlet.config.DefaultServletReaderConfig</servlet-class>
<init-param>
<param-name>swagger.resource.package</param-name>
<param-value>servlet.user</param-value>
</init-param>
<init-param>
<param-name>swagger.api.basepath</param-name>
<param-value>http://localhost:8080/OtherTry/api-docs</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>com.wordnik.swagger.servlet.listing.ApiDeclarationServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ApiDeclarationServlet</servlet-name>
<url-pattern>/api-docs/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Prova</servlet-name>
<servlet-class>servlet.user.Prova</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Prova</servlet-name>
<url-pattern>/user</url-pattern>
</servlet-mapping>
</web-app>
@Api(value = "/user", description = "gets some data from a servlet")
public class Prova extends HttpServlet {
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
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
System.out.println("HERE");
}
}
{"apiVersion":"1.0.0","swaggerVersion":"1.2"}
Unfortunately that wiki Is not up to date. You should copy the dependency from the sample I shared with you yesterday.
Also, what's the package of your servlet?
--
<dependency><groupId>com.wordnik</groupId><artifactId>swagger-servlet_2.10</artifactId><version>1.3.5</version></dependency><dependency><groupId>com.wordnik</groupId><artifactId>swagger-jersey-jaxrs_2.10</artifactId><version>1.3.5</version></dependency>
--
Thanks Ron, but it still show me the same thing.I'm afraid I've to forget it!
--
These two together should get it to work.
Please let me know how it goes.
Ron
--
--
You received this message because you are subscribed to a topic in the Google Groups "Swagger" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/swagger-swaggersocket/JHJgQysLt58/unsubscribe.
To unsubscribe from this group and all its topics, send an email to swagger-swaggers...@googlegroups.com.