【发布时间】:2014-07-05 00:54:45
【问题描述】:
可以同时运行 WebSocketHandler 和 WebAppContext 吗?我正在使用最新版本9.2.1.v20140609。我在下面尝试了配置,但是在 Websocket 调用 localhost:8080/ WebAppContext 时会拦截调用。这是我的启动器:
public static void main(String[] args) throws Exception
{
ServerConnector connector = new ServerConnector(server);
connector.setPort(8080);
server.addConnector(connector);
WebAppContext context = new WebAppContext("webapp", "/");
// Setting up browser caching. Binds params for org.eclipse.jetty.servlet.DefaultServlet.init()
context.getInitParams().put("org.eclipse.jetty.servlet.Default.etags", "true");
context.getInitParams().put("org.eclipse.jetty.servlet.Default.cacheControl", "public, max-age=0");
// Fix for Windows, so Jetty doesn't lock files
if (System.getProperty("os.name").toLowerCase().contains("windows")) {
context.getInitParams().put("org.eclipse.jetty.servlet.Default.useFileMappedBuffer", "false");
}
// Will throw an exception when will be unable to start server for some reason
context.setThrowUnavailableOnStartupException(true);
Broker broker = new Broker();
// Implementation of org.eclipse.jetty.websocket.server.WebSocketHandler
WebSocketHandler socketHandler = new com.namespace.websocket.Handler(broker);
HandlerCollection handlerCollection = new HandlerCollection();
handlerCollection.setHandlers(new Handler[] {context, socketHandler});
server.setHandler(handlerCollection);
// Remove Server:Jetty(9...) from Response Headers
removeServerVersionFromHeaders(server);
server.start();
}
我可以从启动器运行多个 jetty 实例并将 WebSocket 处理程序连接到某个 5555 端口,但最好我想保留一个 Jetty 实例,并且可能使用 /ws 处理程序来管理 WebSocket 连接
【问题讨论】:
标签: java configuration websocket jetty jetty-9