sc.log("IOException while scanning classes for WebActor annotation", e);
}
}
public static void registerWebActor(ServletContext sc, Class<?> webActorClass) {
final WebActor waAnn = webActorClass.getAnnotation(WebActor.class);
final String name = (waAnn.name() != null && !waAnn.name().isEmpty()) ? waAnn.name() : webActorClass.getName();
// servlet
Dynamic d = sc.addServlet(name, WebActorServlet.class);
d.setInitParameter(WebActorServlet.ACTOR_CLASS_PARAM, webActorClass.getName());
d.setAsyncSupported(true);
d.addMapping(waAnn.httpUrlPatterns());
d.addMapping(waAnn.value());
// web socket
ServerContainer scon = (ServerContainer) sc.getAttribute("javax.websocket.server.ServerContainer");
assert scon!=null : "Container does not support websockets !!!";
for (String wsPath : waAnn.webSocketUrlPatterns()) {
try {
scon.addEndpoint(ServerEndpointConfig.Builder.create(WebActorEndpoint.class, wsPath).configurator(new EmbedHttpSessionWsConfigurator()).build());
} catch (DeploymentException ex) {
sc.log("Unable to deploy endpoint", ex);
}