Created
May 19, 2015 20:48
-
-
Save dalegaspi/5060b04326965ea704ea to your computer and use it in GitHub Desktop.
Jersey 2.x Using Embedded Jetty with Swagger, CORS, and a ServletContextListener
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
the .java file is for initializing using embedded Jetty...the web.xml is for deploying the Jersey service as a WAR file. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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