我目前正在开发部署在Wildfly 10上的Java Websocket应用程序。我无法发布代码,但这是逻辑:
多个线程每5秒轮询一次数据库(选择查询,在关闭前一个ResultSet后重用PreparedStatement)并通过Websocket发送到所有连接的客户端。
已配置连接到MYSQL服务器(localhost)的数据源。
应用程序运行正常,直到一段时间后,它崩溃并且日志已满,并且“无法从数据源获得托管连接”#39;错误。此外,Websocket因“ClosedChannelException”而失败。
打开连接并立即关闭它的同一服务器上的服务可以正常工作。但是,相关代码中有5-6个线程必须在5秒后使用连接,因此线程被赋予专用连接,该连接仅在应用程序上下文被销毁时被拆除。
另一件事是当应用程序失败时,它在禁用启用时工作的时间较短。只有重新启动才能让它更好地工作。
相同的项目在Glassfish上没有错误。
不知何故,Wildfly似乎会定期重置数据库连接或所有TCP连接。
是否存在与Wildfly对线程的行为相关的设置?我已经验证了实际上只创建了与预期一样多的线程。
任何帮助都将不胜感激。
编辑:此应用程序在我的本地计算机上运行良好。当我在远程服务器上部署它时,它会工作一段时间(最多3小时),然后完全失败。
我使用Netbeans 8进行编译,如果有帮助的话。