WebSocket Java错误
我对java还是一个新手,最近有人向我介绍了WebSocket。我目前正在创建一个服务器atm,我似乎无法启动服务器,因为我遇到了一个错误WebSocket Java错误,java,websocket,Java,Websocket,我对java还是一个新手,最近有人向我介绍了WebSocket。我目前正在创建一个服务器atm,我似乎无法启动服务器,因为我遇到了一个错误 May 10, 2015 10:04:58 PM org.glassfish.grizzly.http.server.NetworkListener start INFO: Started listener bound to [0.0.0.0:8025] May 10, 2015 10:04:58 PM org.glassfish.grizzly.http.
May 10, 2015 10:04:58 PM org.glassfish.grizzly.http.server.NetworkListener start
INFO: Started listener bound to [0.0.0.0:8025]
May 10, 2015 10:04:58 PM org.glassfish.grizzly.http.server.HttpServer start
INFO: [HttpServer] Started.
May 10, 2015 10:04:58 PM org.glassfish.tyrus.server.Server start
INFO: WebSocket Registered apps: URLs all start with ws://localhost:8025
May 10, 2015 10:04:58 PM org.glassfish.tyrus.server.Server start
INFO: WebSocket server started.
May 10, 2015 10:04:58 PM org.glassfish.grizzly.http.server.NetworkListener shutdownNow
INFO: Stopped listener bound to [0.0.0.0:8025]
May 10, 2015 10:04:58 PM org.glassfish.tyrus.server.Server stop
INFO: Websocket Server stopped.
我还测试了我得到的一个示例程序,并将其用作参考。区别在于@EndPointServer注释似乎是问题所在
这是我到目前为止的代码。。。
WebSocket服务器
package GameSever;
import org.glassfish.tyrus.server.*;
public class GameSocketServer {
public static void main(String[] args) {
runServer();
}
public static void runServer() {
Server server = new Server("localhost", 8025, "/websockets", null, GameServerEndpoint.class);
try {
server.start();
} catch(Exception e) {
throw new RuntimeException(e);
} finally {
server.stop();
}
}
}
这是EndPointServer
package GameSever;
import java.util.logging.Logger;
import javax.websocket.CloseReason;
import javax.websocket.OnClose;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint(value = "/game")
public class GameServerEndpoint {
private Logger logger = Logger.getLogger(this.getClass().getName());
@OnOpen
public void OnOpen(Session player){
logger.info("Connected ... " + player.getId());
}
@OnClose
public void OnClose(Session session, CloseReason closeReason) {
logger.info(String.format("Session %s closed because of %s", session.getId(), closeReason));
}
}
因此,代码的问题在于错误“org.glassfish.grizzly.http.server.NetworkListener shutdownNow”似乎阻止我启动服务器。是否仍有可能修复此问题?如果在catch块的末尾添加了finally块,则无论try或catch块如何,它都将被执行 如果没有发生异常
try{
//code here get executed first
} catch(Exception e){
//code here not executing
}finally{
//this code executed after try block
}
如果发生异常
try{
//Exception occurred here
} catch(Exception e){
//code here get executed when exception is thrown
}finally{
//this code executed after catch block
}
所以你的情况应该是
try{
//start here
} catch(Exception e){
//close(stop server) here
//then throw the exception
}
您似乎正在立即调用
.start()
,然后调用.stop()
(在finally
块中)。这可能就是服务器启动然后停止的原因。(没有记录任何错误,应用程序正在执行您的代码指定的操作。)您的代码刚刚启动然后停止服务器有什么原因吗?我正在尝试这样做,如果start.sever()不工作,它将抛出异常并停止服务器server@NoobestPros如果你打算这么做,然后,您可能希望将stop
函数放在catch语句中。因为如果你把它放在finally语句中,不管发生什么,里面的代码都会被执行。