I'm struggling to make simple chat atmosphere application
to work with embedded undertow.
The app seems to connect to websocket, and requests are
passing through to AtmosphereHandler but response never
reaches client. I suppose that I'm missing something in my
undertow configuration but don't know what. Same code works
when dropped into Tomcat or Jetty.
public class Bootstrap {
public static void main(String[] args) throws
Exception {
// deploy to undertow
DeploymentInfo servletBuilder =
Servlets.deployment()
.setClassLoader(Bootstrap.class.getClassLoader())
.setContextPath("")
.setDeploymentName("chat")
.setDefaultEncoding("UTF-8")
.setUrlEncoding("UTF-8")
.setResourceManager(new
FileResourceManager(new File(""), 0))
.addWelcomePage("index.html");
servletBuilder.addServlet(Servlets.servlet("AtmosphereServlet",
AtmosphereServlet.class)
.addInitParam("org.atmosphere.cpr.AtmosphereHandler",
"org.atmosphere.samples.chat.Chat")
.addMapping("/chat/*")
.setAsyncSupported(true));
final WebSocketDeploymentInfo
webSocketDeploymentInfo = new WebSocketDeploymentInfo();
servletBuilder.addServletContextAttribute(WebSocketDeploymentInfo.ATTRIBUTE_NAME,
webSocketDeploymentInfo);
DeploymentManager manager =
Servlets.defaultContainer().addDeployment(servletBuilder);
manager.deploy();
HttpHandler servletHandler = manager.start();
PathHandler path =
Handlers.path(Handlers.redirect("/")).addPrefixPath("/",
servletHandler);
Undertow server = Undertow.builder()
.addHttpListener(8080, "0.0.0.0")
.setHandler(path)
.build();
server.start();
}
}