2012-04-01 90 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