我正在开发一个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循环是错误的,但是可以包含什么。我有两种方法:
但是,我不希望使用线程应用程序。
我知道在EJB中有一些东西,比如EJBTimer。实现这一点的最佳方法是什么,以及如何在代码中实现这一点。你能帮助我如何改变while循环来做我想做的事情吗?
此外,客户端没有API来调用此应用程序。如何在启动Application时触发此实例,以便侦听消息。通常,这可以通过Servlet来实现,但我认为这是行不通的。有什么想法吗?
发布于 2014-04-04 15:00:38
这种功能处于您在EJB中要做的事情类型的“边缘”。通常,EJB不直接进行网络类型活动,特别是长期监听。
您真正想要的是EJB单例。这有点像一个独立的实例,它可以执行更高级的事情,比如自定义并发/线程以及(与您相关的)启动自定义套接字侦听器。
https://stackoverflow.com/questions/22865969
复制相似问题