我正在努力让WebSockets在Grizzly / Glassfish之上运行。我克隆了the sample WebSockets chat application,构建它并将其部署到Glassfish 3.1.2。但是,我无法连接WebSockets。 WebSockets握手失败,因为我收到了405(Method Not Allowed)响应。这是有道理的,因为Servlet中有什么:
public class WebSocketsServlet extends HttpServlet {
private final ChatApplication app = new ChatApplication();
@Override
public void init(ServletConfig config) throws ServletException {
WebSocketEngine.getEngine().register(app);
}
@Override
public void destroy() {
WebSocketEngine.getEngine().unregister(app);
}
}
没有指定doGet方法,所以我想知道某处是否需要更多配置,或者你是否需要自己在servlet doGet方法中实现握手逻辑?
答案 0 :(得分:2)
我试图在glassfish 3.1.2上使用grizzly-websockets-chat-2.1.9.war并得到同样的错误。
的建议表示使用此处找到的版本(我认为该版本会表明它的版本较旧,但文件上的时间戳是2012年1月30日):
WAR
SOURCES
通过使用那场战争一切正常。
对于那些喜欢使用glassfish网络控制台的人。您可以通过以下方式启用Web套接字:
配置> server-config>网络配置>方案> http-listener-1,然后HTTP选项卡>滚动到底部并选中Websockets Support。
注意配置> default-config> ...也有相同的选项
你可能会发现这个更大陆的地方是一个终端。
答案 1 :(得分:1)
您似乎未启用websocket支持(默认情况下已禁用)。
发出以下命令,然后重新启动服务器:
asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.websockets-support-enabled = true
您可以将http-listener-1替换为您希望启用WS支持的任何http-listener。