2012-04-01 2 views
2

Я пытаюсь получить WebSockets, работающий поверх Grizzly/Glassfish. Я клонировал the sample WebSockets chat application, построил его и развернул в Glassfish 3.1.2. Однако я не могу подключить WebSockets. Рукопожатие WebSockets не работает, потому что я получаю ответ 405 (метод не разрешен). Это имеет смысл из-за того, что в Servlet:Grizzly/Glassfish - Невозможно установить квитанции для подключения к сети

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 указано, поэтому я интересно, если есть требуется дополнительная настройка где-то, или если вам нужно реализовать логику рукопожатия в сервлет doGet метод самостоятельно?

+0

+1 как я работал над этой проблемой прямо сейчас ... и я только нашел решение ... – Quaternion

ответ

2

Я пытался использовать grizzly-websockets-chat-2.1.9.war на glassfish 3.1.2 и получать ту же ошибку.

Вслед за советом с этой страницы http://www.java.net/forum/topic/glassfish/glassfish/websocket-connection-not-establishing-glasshfish-server-how-fix-it-0

в котором говорится, чтобы использовать версию найти здесь (я думаю, что версия будет означать, что будучи старше, однако временные метки на файлы 30 января 2012):

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

При использовании этой войны все работает.

Для тех, кто любит использовать веб-консоль из морской рыбы. Вы можете включить веб-сокеты:

Конфигурации> server-config> Конфигурация сети> Протоколы> http-listener-1, затем вкладка HTTP> Прокрутите вниз и откройте поддержку Websockets.

Конфигурации Примечание> по умолчанию-конфигурации> ... также имеет те же параметры

Вы могли бы найти это более континент, что держа терминал вокруг.

+0

Удивительный, спасибо. Я отправил сообщение в список рассылки grizzly и выяснил, что линия 2.x grizzly не поддерживается на Glassfish 3.x. Глупые мелочи ... –

1

Похоже, вы не включили поддержку websocket (по умолчанию отключено).

Выполните следующую команду, а затем перезапустить сервер:

asadmin набор configs.config.server-config.network-config.protocols.protocol.http-слушателем-1.http.websockets-опорно enabled = true

Вы можете заменить http-listener-1 любым HTTP-прослушивателем, с которым хотите включить поддержку WS.

+2

Я попытался установить параметр конфигурации и перезапустить сервер, но я все еще получаю 405 ответ от Glassfish сервер. –

+0

Я тоже получаю эту ошибку, соединение WebSocket с «ws: // localhost: 8080/WebSocket-1/message» не выполнено: Неожиданный код ответа: 404, glassfis v: 4 –

Смежные вопросы