我正在开发一个TCPIP应用程序,客户端将信息发送到指定的端口,服务器将监听该端口。我想实现以下目标:
重新连接到客户端/端口,以查看它是否在指定的时间段后处于活动状态。
我已实施以下代码:
@Stateless
@Local
public Listener implements ConnectionListener {
public void listen() throws Exception {
ServerSocket serverSocket = new ServerSocket(somePort);
Socket socket = serverSocket.accept();
while(!socket.isClosed()) {
}
}
}
public interface ConnectionListener {
public void listen() throws Exception;
}
如何通过EJB技术实现这一目标?我知道while循环是错误的,但可以包含什么。我有两种方法:
但是,我不想使用Thread appraoch。
我在EJB中知道有一些东西,比如EJBTimer。实现它的最佳方法是什么,以及如何在代码中实现它。你能帮助我改变while循环来做我想做的事吗?
此外,客户端没有API可以调用此应用程序。如何在启动Application Server时触发此实例,以便侦听消息。通常,这可以通过Servlet实现,但我认为这不会起作用。有什么想法吗?
答案 0 :(得分:0)
这种功能处于您在EJB中所做事情类型的“边缘”。通常,EJB不直接进行网络类型活动,尤其是长期监听。
你真正想要的是一个EJB单例。这有点像一个独立的实例,可以执行更高级的事情,如自定义并发/线程和(与您相关)启动自定义套接字侦听器。