Java 识别会话是否空闲并在带Mina的解码器中刷新?

Java 识别会话是否空闲并在带Mina的解码器中刷新?,java,apache-camel,apache-mina,Java,Apache Camel,Apache Mina,我正在使用ApacheCamel和ApacheMina来拥有一个TCP服务器。我在代码中使用了一个特定的协议解码器。在这个解码器中,我等待得到X个字节,然后再将它们发送到下游路由 我想实现一些能够理解会话空闲或关闭的东西,然后将我们已经得到的字节发送到路由的下游(如果我们没有得到总的X字节,这并不重要)。我已经尝试过实现一个IoFilterAdapter重写方法sessionIdle(),但我不确定如何使用它。重写sessionIdle()方法基本上是为了在会话空闲时间达到时关闭(或根据需要配置

我正在使用ApacheCamel和ApacheMina来拥有一个TCP服务器。我在代码中使用了一个特定的协议解码器。在这个解码器中,我等待得到X个字节,然后再将它们发送到下游路由


我想实现一些能够理解会话空闲或关闭的东西,然后将我们已经得到的字节发送到路由的下游(如果我们没有得到总的X字节,这并不重要)。我已经尝试过实现一个
IoFilterAdapter
重写方法
sessionIdle()
,但我不确定如何使用它。

重写
sessionIdle()
方法基本上是为了在会话空闲时间达到时关闭(或根据需要配置)会话

您可以通过重写
sessionOpened()
方法在处理程序类内设置空闲时间(或通过扩展
IoFilterAdapter
)。 像这样的东西应该能起作用:

@Override
public void sessionOpened(final IoSession session) throws Exception
{
    session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, this.idleTimeOut);
}
您还可以使用在
IdleStatus
类中定义的其他空闲状态。基本上有以下几种状态:

public static final IdleStatus READER_IDLE = new IdleStatus("reader idle");
public static final IdleStatus WRITER_IDLE = new IdleStatus("writer idle");
public static final IdleStatus BOTH_IDLE = new IdleStatus("both idle");