我正试图让WebSockets在Grizzly/Glassfish之上工作。我已经克隆了示例WebSockets聊天应用程序,构建并部署到Glassfish 3.1.2。但是,我无法连接WebSockets。WebSockets握手失败,因为我得到了405(不允许使用方法)响应。这是有道理的,因为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方法中实现握手逻辑?
我试图在glassfish 3.1.2上使用grizzy-websockets-cat-2.1.9.war,但也出现了同样的错误。
遵循本页的建议http://www.java.net/forum/topic/glassfish/glassfish/websocket-connection-not-establishing-glasshfish-server-how-fix-it-0
哪个州使用这里找到的版本(我认为版本会表明它更旧,但文件上的时间戳是2012年1月30日):
战争
https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.grazzly.samples&a=灰色的websockets聊天&v=1.9.46&e=战争
来源
https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.grazzly.samples&a=灰色的websockets聊天&v=1.9.46&e=罐子&c=来源
通过使用这场战争,一切都会奏效。
对于那些喜欢使用glassfish网络控制台的人。您可以通过以下方式启用web套接字:
配置>服务器配置>网络配置>协议>http-listener-1,然后是http选项卡>滚动到底部并选中Websockets支持。
注意配置>默认配置>。。。也有相同的选项
你可能会发现这片大陆周围还有一个码头。
您似乎还没有启用websocket支持(默认情况下已禁用)。
发出以下命令,然后重新启动服务器:
asadmin set configs.config.server config.network config.procols.procols.http-listener-1.http.websockets support-enabled=true
您可以将http-listener-1替换为希望启用WS支持的任何http侦听器。