Pregunta

Estoy tratando de construir la solicitud de bricolaje en OpenShift que implementa WebSockets.Comencé con este ejemplo:

HTTPS://www.openshift.com/blogs/how-to-build-java-websocket-applications-using-the-jsr-356-api

Si lo ejecuto localmente, funciona perfectamente.Cuando subo el código a un cartucho DIY OpenShift y compílelo, recibo un error.Modificé el código para que el servidor se conecte a $ openshift_diy_ip en el puerto 8000, pero cuando el código llega al servidor de línea.start ();Se bloquea con el siguiente error.

¿Qué estoy haciendo mal?Probé otros puertos (17500 y ON) sin suerte.

Error:

Binding server to 127.7.177.1:8000
Jun 04, 2014 10:28:02 AM org.glassfish.tyrus.server.ServerContainerFactory create
INFO: Provider class loaded: org.glassfish.tyrus.container.grizzly.GrizzlyEngine
java.net.SocketException: Permission denied
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:444)
at sun.nio.ch.Net.bind(Net.java:436)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.glassfish.grizzly.nio.transport.TCPNIOBindingHandler.bindToChannelAndAddress(TCPNIOBindingHandler.java:131)
at org.glassfish.grizzly.nio.transport.TCPNIOBindingHandler.bind(TCPNIOBindingHandler.java:87)
at org.glassfish.grizzly.nio.transport.TCPNIOBindingHandler.bind(TCPNIOBindingHandler.java:64)
at org.glassfish.grizzly.AbstractBindingHandler.bind(AbstractBindingHandler.java:140)
at org.glassfish.grizzly.AbstractBindingHandler.bind(AbstractBindingHandler.java:159)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.bind(TCPNIOTransport.java:470)
at org.glassfish.grizzly.http.server.NetworkListener.start(NetworkListener.java:658)
at org.glassfish.grizzly.http.server.HttpServer.start(HttpServer.java:264)
at org.glassfish.tyrus.container.grizzly.GrizzlyEngine$1.start(GrizzlyEngine.java:88)
at org.glassfish.tyrus.server.TyrusServerContainer.start(TyrusServerContainer.java:119)
at org.glassfish.tyrus.server.Server.start(Server.java:122)
at org.neo.wordgame.server.WebSocketServer.runServer(WebSocketServer.java:23)
at org.neo.wordgame.server.WebSocketServer.main(WebSocketServer.java:11)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293)
at java.lang.Thread.run(Thread.java:744)
Please press a key to stop the server.Jun 04, 2014 10:28:04 AM org.glassfish.tyrus.server.Server stop
INFO: Websocket Server stopped.

¿Fue útil?

Solución

Su solicitud necesita escuchar en el puerto 8080 en su $ openshift_diy_ip, pero debe conectarse a él desde el exterior en http://app-domain.rhcloud.com:8000 o http:// aplicación-domain.rhcloud.com:8443 (SSL).La unión al puerto 8000 en su $ openshift_diy_ip no funcionará.

Otros consejos

Es igual de DesarrolleCorey dice.Las últimas noticias sobre WebSockets en OpenShift puden encontrarlo esta publicación de blog , diciendo claramente que tienePara acceder al 8000/8443 desde el exterior.

Como ejemplo en vivo, he implementado la aplicación usando WebSockets en OpenShift.Si accede a él utilizando http://vinbudin-openshift.anthavio.net/ui

Aunque la aplicación todavía funciona, porque puede degradarse en silencio en silencio, Cuando se ve en la pestaña Network de Chrome Developer Tool, puede ver la solicitud de actualización de Scocket WebSocket rechazada

Request URL:ws://vinbudin-openshift.anthavio.net/ui/PUSH/?v-uiId=0&v-csrfToken=bcd0c9a6-2a6f-4ddb-8332-7929e4337b2d&X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.1.5.vaadin4-jquery&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&X-Cache-Date=0&Content-Type=application/json;%20charset=UTF-8&X-atmo-protocol=true
Request Method:GET
Status Code:501 Not Implemented

Pero usando URL con puerto 8000 http://vinbudin-openshift.anthavio.net:8000/ ui produce mejor resultado

Request URL:ws://vinbudin-openshift.anthavio.net:8000/ui/PUSH/?v-uiId=0&v-csrfToken=bcd0c9a6-2a6f-4ddb-8332-7929e4337b2d&X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.1.5.vaadin4-jquery&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&X-Cache-Date=0&Content-Type=application/json;%20charset=UTF-8&X-atmo-protocol=true
Request Method:GET
Status Code:101 Switching Protocols

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top