Skip to content

Instantly share code, notes, and snippets.

@johnament
Last active August 29, 2015 13:56
Show Gist options
  • Select an option

  • Save johnament/9220905 to your computer and use it in GitHub Desktop.

Select an option

Save johnament/9220905 to your computer and use it in GitHub Desktop.
import org.jboss.weld.context.bound.BoundRequestContext;
import javax.enterprise.inject.spi.CDI;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.ServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* Created by John.Ament on 2/22/14.
*/
public class CDIListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
BoundRequestContext requestContext = (BoundRequestContext)servletRequestEvent.getServletRequest().getAttribute("cdiRequestContext");
Map<String,Object> requestMap = (Map<String,Object>)servletRequestEvent.getServletRequest().getAttribute("cdiRequestMap");
requestContext.invalidate();
requestContext.deactivate();
requestContext.dissociate(requestMap);
}
@Override
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
BoundRequestContext requestContext = CDI.current().select(BoundRequestContext.class).get();
Map<String,Object> requestMap = new HashMap<>();
requestContext.associate(requestMap);
requestContext.activate();
servletRequestEvent.getServletRequest().setAttribute("cdiRequestContext",requestContext);
servletRequestEvent.getServletRequest().setAttribute("cdiRequestMap",requestMap);
}
}
ResteasyDeployment deployment = new ResteasyDeployment();
deployment.getActualResourceClasses().addAll(paths.getResources());
deployment.getActualProviderClasses().addAll(paths.getProviders());
deployment.setInjectorFactoryClass(CdiInjectorFactory.class.getName());
ListenerInfo listener = listener(CDIListener.class);
ServletInfo resteasyServlet = servlet("ResteasyServlet", HttpServlet30Dispatcher.class)
.setAsyncSupported(true)
.setLoadOnStartup(1)
.addMapping(mapping);
DeploymentInfo di = new DeploymentInfo()
.addListener(listener)
.setContextPath("/api")
.addServletContextAttribute(ResteasyDeployment.class.getName(), deployment)
.addServlet(resteasyServlet).setDeploymentName("ResteasyUndertow")
.setClassLoader(JaxRsActivator.class.getClassLoader());
DeploymentManager deploymentManager = Servlets.defaultContainer().addDeployment(di);
deploymentManager.deploy();
Undertow server = null;
try {
server = Undertow.builder()
.addHttpListener(8087, "0.0.0.0")
.setHandler(deploymentManager.start())
.build();
} catch (ServletException e) {
e.printStackTrace();
}
server.start();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment