integrate swagger into Jersey for auto generation of Swagger definition

161 views
Skip to first unread message

tam wei

unread,
Aug 20, 2016, 5:57:00 AM8/20/16
to Swagger
Hi all,
I have an existing set of resource that we use to expose as API. we are exploring using Swagger to document the API. I am following the guide from https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-1.X-Project-Setup-1.5#configure-and-initialize-swagger to generate the Swagger definition.

The servlet I configure failed to be initialised due to the error 'com.sun.jersey.api.container.ContainerException:Method, public javax.ws.rs.core.Response io.swagger.jaxrs.listing.AcceptHeaderApiListingResource.getListingYaml(javax.ws.rs.core.Application,javax.servlet.ServletConfig,javax.ws.rs.core.HttpHeaders,javax.ws.rs.core.UriInfo), annotated with GET of resource, class io.swagger.jaxrs.listing.AcceptHeaderApiListingResource, is not recognized as valid Java method annotated with @HttpMethod.'

Can I know what could be the issue? I have included my servlet configuration as well (see the last section). thanks!

Full stack trace

weblogic.application.ModuleException: [HTTP:101216]Servlet: "swaggerTesting" failed to preload on startup in Web application: "Online".

com.sun.jersey.api.container.ContainerException: Method, public javax.ws.rs.core.Response io.swagger.jaxrs.listing.AcceptHeaderApiListingResource.getListingYaml(javax.ws.rs.core.Application,javax.servlet.ServletConfig,javax.ws.rs.core.HttpHeaders,javax.ws.rs.core.UriInfo), annotated with GET of resource, class io.swagger.jaxrs.listing.AcceptHeaderApiListingResource, is not recognized as valid Java method annotated with @HttpMethod.

at com.sun.jersey.server.impl.model.method.ResourceHttpMethod.<init>(ResourceHttpMethod.java:92)

at com.sun.jersey.server.impl.model.method.ResourceHttpMethod.<init>(ResourceHttpMethod.java:69)

at com.sun.jersey.server.impl.model.method.ResourceHttpMethod.<init>(ResourceHttpMethod.java:61)

at com.sun.jersey.server.impl.model.ResourceClass.processMethods(ResourceClass.java:311)

at com.sun.jersey.server.impl.model.ResourceClass.<init>(ResourceClass.java:133)

at com.sun.jersey.server.impl.application.WebApplicationImpl.newResourceClass(WebApplicationImpl.java:554)

at com.sun.jersey.server.impl.application.WebApplicationImpl.getResourceClass(WebApplicationImpl.java:517)

at com.sun.jersey.server.impl.application.WebApplicationImpl.processRootResources(WebApplicationImpl.java:1147)

at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:912)

at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:589)

at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:403)

at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:252)

at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:550)

at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:201)

at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:307)

at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:470)

at javax.servlet.GenericServlet.init(GenericServlet.java:240)

at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:299)

at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:250)

at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)

at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)

at weblogic.servlet.internal.StubSecurityHelper.initServletInstance(StubSecurityHelper.java:94)

at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:82)

at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:74)

at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:60)

at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:34)

at weblogic.servlet.internal.ServletStubImpl.initStubLifecycleHelper(ServletStubImpl.java:624)

at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:565)

at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1874)

at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1848)

com.sun.jersey.api.container.ContainerException:Method, public javax.ws.rs.core.Response io.swagger.jaxrs.listing.AcceptHeaderApiListingResource.getListingYaml(javax.ws.rs.core.Application,javax.servlet.ServletConfig,javax.ws.rs.core.HttpHeaders,javax.ws.rs.core.UriInfo), annotated with GET of resource, class io.swagger.jaxrs.listing.AcceptHeaderApiListingResource, is not recognized as valid Java method annotated with @HttpMethod.

at com.sun.jersey.server.impl.model.method.ResourceHttpMethod.<init>(ResourceHttpMethod.java:92)

at com.sun.jersey.server.impl.model.method.ResourceHttpMethod.<init>(ResourceHttpMethod.java:69)

at com.sun.jersey.server.impl.model.method.ResourceHttpMethod.<init>(ResourceHttpMethod.java:61)

at com.sun.jersey.server.impl.model.ResourceClass.processMethods(ResourceClass.java:311)

at com.sun.jersey.server.impl.model.ResourceClass.<init>(ResourceClass.java:133)

Truncated. see log file for complete stack trace



Web.xml configuration

<servlet>

        <servlet-name>swaggerTesting</servlet-name>

        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>

        <init-param>

            <param-name>com.sun.jersey.config.property.packages</param-name>

            <param-value>com.fapi.online.resources;com.fapi.online.provider;org.codehaus.jackson.jaxrs;io.swagger.jaxrs.json;io.swagger.jaxrs.listing</param-value>

        </init-param>

        <init-param>

<param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>

<param-value>com.sun.jersey.api.container.filter.GZIPContentEncodingFilter;com.starhub.fapi.online.security.CustomRequestFilter</param-value>

</init-param>

<init-param>

    <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>

    <param-value>com.sun.jersey.api.container.filter.GZIPContentEncodingFilter;com.starhub.fapi.online.security.CrossDomainFilter</param-value>

</init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

  

  <servlet-mapping>

        <servlet-name>swaggerTesting</servlet-name>

        <url-pattern>/*</url-pattern>

  </servlet-mapping>

  

  <servlet>

        <servlet-name>Jersey2Config</servlet-name>

        <servlet-class>io.swagger.jaxrs.config.DefaultJaxrsConfig</servlet-class>

        <init-param>

            <param-name>api.version</param-name>

            <param-value>15.0.0</param-value>

        </init-param>

        <init-param>

      <param-name>swagger.api.title</param-name>

      <param-value>Online</param-value>

    </init-param>

    <init-param>

      <param-name>swagger.api.basepath</param-name>

      <param-value>http://localhost:7001/Online/api</param-value>

    </init-param>

        <load-on-startup>2</load-on-startup>

    </servlet>

Jatin Arora

unread,
Aug 25, 2017, 12:41:44 PM8/25/17
to Swagger
Hi Tam,

Were you able to solve the issue? . I am facing same problem

Thanks and Regards
Jatin Arora
Reply all
Reply to author
Forward
0 new messages