2012-04-01 28 views
2

我试图让WebSockets在灰熊/ Glassfish上工作。我克隆了the sample WebSockets chat application,构建它并将其部署到Glassfish 3.1.2。但是,我无法获得WebSockets连接。 WebSockets握手失败,因为我得到405(方法不允许)响应。这使得因为什么是在Servlet意义:灰熊/ Glassfish - 无法建立websockets握手

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

+1因为我正在处理这个问题,现在...我刚刚找到解决方案... – Quaternion 2012-04-02 03:25:51

回答

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

其中规定要使用此处找到的版本的意见(我想版本将表明它是旧的但是文件上的时间戳二零一二年一月三十零日):

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

通过使用这场战争一切正常。

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

配置> server-config>网络配置>协议> http-listener-1,然后选择HTTP选项卡>滚动到底部并勾选Websockets Support。

注意配置>默认配置> ...也有相同的选项

您可能会发现这更是大陆保持终端周围。

+0

太棒了,谢谢。我在灰熊邮件列表上发布了一条消息,发现Glassfish 3.x不支持2.x的灰熊系列。愚蠢的小东西...... – 2012-04-02 22:02:55

1

看来你还没有启用websocket支持(默认禁用)。

发出以下命令,然后重新启动服务器:

的asadmin设置configs.config.server-config.network-config.protocols.protocol.http侦听器1.http.websockets - 支持 - enabled = true

您可以将http-listener-1替换为您希望启用WS支持的任何http-listener。

+2

我尝试设置配置选项并重新启动服务器,但我仍然从Glassfish得到405响应服务器。 – 2012-04-01 19:12:52

+0

我也收到这个错误,WebSocket连接到'ws:// localhost:8080/WebSocket-1/message'失败:非预期的响应代码:404,glassfis v:4 – 2013-03-08 08:43:11