Java TCPIP EJB线程

时间:2014-04-04 14:46:50

标签: java multithreading sockets serversocket tcp-ip

我正在开发一个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实现,但我认为这不会起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这种功能处于您在EJB中所做事情类型的“边缘”。通常,EJB不直接进行网络类型活动,尤其是长期监听。

你真正想要的是一个EJB单例。这有点像一个独立的实例,可以执行更高级的事情,如自定义并发/线程和(与您相关)启动自定义套接字侦听器。