gpt4 book ai didi

java - Tomcat 工作时超时

转载 作者:行者123 更新时间:2023-11-30 08:54:14 25 4
gpt4 key购买 nike

首先 - 我对 servlet 和所有其他 Java EE 的东西真的没什么经验。

我正在尝试制作简单的聊天室,但在此之前我只是尝试制作简单的 udp 服务器和客户端。一切正常,除了 45 秒后 tomcat 超时并关闭的一件事。我只有一个调用 UDP 服务器类的 contextListener。

是因为我没有servlet,还是?..

这是我的 UDP 服务器类:

public UDPServer() {
System.out.println("Constructor reached");
try {
connect();
} catch (Exception e) {
e.printStackTrace();
}
}


public void connect() throws Exception
{
int serverPort = 9123;
System.out.println("Server is starting");
DatagramSocket serverSocket = new DatagramSocket(serverPort);
System.out.println("Server started");
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String( receivePacket.getData());
System.out.println("RECEIVED: " + sentence);
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, port);
serverSocket.send(sendPacket);
receiveData = new byte[1024];
sendData = new byte[1024];
}
}

这是我的简单 contextListener

public class StartupServlet implements ServletContextListener {

// private static Logger logger = Logger.getAnonymousLogger(ApplicationListener.class);

@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
// logger.info("class : context destroyed");

}

@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
ServletContext context = servletContextEvent.getServletContext();
///// HERE You launch your class
UDPServer udpserver = new UDPServer();
// logger.info("myapp : context Initialized");
}

这是 web.xml

<web-app>
<listener>
<listener-class>com.chatroom.servlet.StartupServlet</listener-class>
</listener>
</web-app>

最佳答案

UDP 服务器与 servlet 初始化线程运行在同一个线程中,并且它有一个无限循环。所以,应用程序无法启动。在单独的线程中运行 UDPServer。

关于java - Tomcat 工作时超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29486752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com