Skip to content

Instantly share code, notes, and snippets.

@dalegaspi
Created May 19, 2015 20:48
Show Gist options
  • Save dalegaspi/5060b04326965ea704ea to your computer and use it in GitHub Desktop.
Save dalegaspi/5060b04326965ea704ea to your computer and use it in GitHub Desktop.
Jersey 2.x Using Embedded Jetty with Swagger, CORS, and a ServletContextListener
the .java file is for initializing using embedded Jetty...the web.xml is for deploying the Jersey service as a WAR file.
public static Server startServer() throws Exception {
final ResourceConfig rc =
new ResourceConfig().packages("com.yourpackage...jersey",
"com.wordnik.swagger.jaxrs.listing")
.register(JacksonFeature.class) // enable Jackson
.register(ResponseCorsFilter.class) // enable CORS
.register(ApiListingResource.class)
.register(SwaggerSerializers.class);
// use Jetty
ServletContextHandler context
= new ServletContextHandler(ServletContextHandler.SESSIONS);
// the main REST service context
context.setContextPath("/");
Server jettyServer = new Server(1339);
jettyServer.setHandler(context);
ServletHolder jerseyServlet = new ServletHolder(new
org.glassfish.jersey.servlet.ServletContainer(rc));
jerseyServlet.setInitOrder(0);
context.addServlet(jerseyServlet, "/*");
context.addEventListener(new ServiceInitializer());
// swagger JSON
ServletHolder swaggerServlet = new ServletHolder(new JerseyJaxrsConfig());
swaggerServlet.setName("Jersey2Config");
swaggerServlet.setInitParameter("swagger.api.basepath", BASE_URI);
swaggerServlet.setInitParameter("api.version", "1.0.0");
swaggerServlet.setInitOrder(2);
context.addServlet(swaggerServlet, "");
jettyServer.start();
return jettyServer;
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<filter>
<filter-name>Sequencer-REST</filter-name>
<filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.wordnik.swagger.jaxrs.json,com.siriusxm.sequencer.services.jersey</param-value>
</init-param>
<init-param>
<param-name>org.glassfish.jersey.container.ContainerResponseFilters</param-name>
<param-value>com.yourpackage...ResponseCorsFilter</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>
com.wordnik.swagger.jersey.listing.ApiListingResourceJSON,
com.wordnik.swagger.jersey.listing.JerseyApiDeclarationProvider,
com.wordnik.swagger.jersey.listing.JerseyResourceListingProvider
</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Sequencer-REST</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>Jersey2Config</servlet-name>
<servlet-class>com.wordnik.swagger.jersey.config.JerseyJaxrsConfig</servlet-class>
<init-param>
<param-name>api.version</param-name>
<param-value>1.0.0</param-value>
</init-param>
<init-param>
<param-name>swagger.api.basepath</param-name>
<param-value>http://yourserver.com:8080/</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<listener>
<listener-class>com.siriusxm.sequencer.services.jersey.ServiceInitializer</listener-class>
</listener>
</web-app>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment