Question

J'essaie de créer une application de bricolage sur OpenShift qui implémente des webockets.J'ai commencé avec cet exemple:

https://www.openshift.com/blogs/how-to-build-java-websocket-Applications-utilisation-Le-jsr-356-api

Si je l'exécute localement, cela fonctionne parfaitement.Lorsque je télécharge le code sur une cartouche de DIY OpenShift et la compilez, je reçois une erreur.J'ai modifié le code de sorte que le serveur se connecte à $ openshift_diy_ip sur le port 8000, mais lorsque le code atteint le serveur de ligne.Start ();Il se bloque avec l'erreur suivante.

Qu'est-ce que je fais mal?J'ai essayé d'autres ports (17500 et ON) sans chance.

ERREUR:

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.

Était-ce utile?

La solution

Votre application doit écouter sur le port 8080 sur votre $ OpenShift_diy_ip, mais vous devez vous connecter à l'extérieur à http://app-domain.rhcloud.com:8000 ou http:// app-domain.rhcloud.com:8443 (SSL).Relialisation au port 8000 sur votre $ OpenShift_diy_ip ne fonctionnera pas.

Autres conseils

C'est tout comme Développement dit.Dernières nouvelles sur WebSockets sur OpenShift Je pourrais trouver est Ce blog post , disant clairement que vous avezPour accéder au 8000/8443 de l'extérieur.

comme exemple en direct, j'ai déployé l'application à l'aide de Webockets dans OpenShift.Si vous y accédez à l'aide de http://vinbudin-openshift.anthavio.net/ui

Bien que l'application fonctionne toujours, car elle peut se dégrader à l'interrogation de longue date silencieusement, Lorsque vous regardez dans l'onglet Network Chrome Developer Tool, vous pouvez voir la demande de mise à niveau de Websocket rejetée

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

mais en utilisant URL avec le port 8000 http://vinbudin-openshift.anthavio.net:8000/ ui donne un meilleur résultat

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top