Grizzly / Glassfish - 无法建立websockets握手

时间:2012-04-01 13:22:42

标签: websocket glassfish-3 grizzly

我正在努力让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方法中实现握手逻辑?

2 个答案:

答案 0 :(得分:2)

我试图在glassfish 3.1.2上使用grizzly-websockets-chat-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日):

WAR

https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.grizzly.samples&a=grizzly-websockets-chat&v=1.9.46&e=war

SOURCES

https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.grizzly.samples&a=grizzly-websockets-chat&v=1.9.46&e=jar&c=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。