websocket - Grizzly/Glassfish - 无法建立 websockets 握手

标签 websocket glassfish-3 grizzly

我正在尝试让 WebSockets 在 Grizzly/Glassfish 上工作。我克隆了the sample WebSockets chat application ,构建它并将其部署到 Glassfish 3.1.2。但是,我无法连接 WebSocket。 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 上使用 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

来源

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

通过利用这场 war ,一切都会顺利。

对于那些喜欢使用 glassfish Web 控制台的人。您可以通过以下方式启用网络套接字:

配置 > 服务器配置 > 网络配置 > 协议(protocol) > http-listener-1,然后 HTTP 选项卡 > 滚动到底部并选中 Websockets 支持。

注意配置 > default-config > ...也有相同的选项

您可能会发现这个大陆上还有一个终端。

关于websocket - Grizzly/Glassfish - 无法建立 websockets 握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9964716/

相关文章:

java - 如何在 Windows Server 上部署 java jersey 和 Grizzly

java - 如何使用自签名证书从 Javascript 连接到 SSL 服务器?

python - 在高速公路python中自动重新连接

java - 信任 java Websocket 客户端中的所有证书

java - Grizzly 是 Web 服务器(基于 NIO)还是框架

java - 使用 Grizzly 和 Jersey 的 SSL

https - 在 SecurityFilter 中调用 getUserPrincipal 导致 IllegalStateException :Handshake is not completed

java - React Native 和 Java 之间的 WebSocket

Java Connect 数据源永无止境

Java EE 依赖本地 EJB