我创建了一个应用程序来监听来自 AS400 数据队列的传入消息。该应用程序在 Java 应用程序服务器 (Glassfish) 中运行。
我正在使用 jt400 库来连接和读取数据队列。从数据队列读取与从套接字读取非常相似。您调用 read 它会阻塞,直到从连接的另一端写入某些内容。API 提供了一种重载的读取方法,允许程序员设置超时时间。
由于 read 是一个阻塞调用,并且必须从我的应用程序中调用,我必须想办法让它在应用程序启动时启动,并在 Glassfish 启动时保持运行。
我创建了一个 EJB,添加了 @Startup 注释并设置了一个 @Scheduled 方法。在该方法中,我在 while 循环中以超时调用 read,允许我检查类的属性并可能将其关闭。
我想知道是否有更好的方法来实现这样的事情。我不是专门谈论连接到 AS400 DataQueue。我想到的是在 Java 应用程序服务器中运行的事件机制,您可以在其中挂钩自定义事件消息提供程序。
这可以像 JDBC 资源一样定义为 Glassfish 上的自定义资源吗?J2EE 规范是否提供了一些构建机制?