Crystal Report java库,登录永远挂起

Crystal Report java库,登录永远挂起,java,web-services,crystal-reports,business-objects,Java,Web Services,Crystal Reports,Business Objects,我们的项目将业务对象用于报告。我们启动报告的java web应用程序通过我们设置的web服务来处理我们希望如何启动它们的业务规则。很好用…只有一条皱纹 薄熙来似乎非常不可靠。在夜间定时重启后,该设备经常出现故障或无法启动。我们的行动小组已经习惯了这一事实 但是在java团队中,影响我的部分是我们的Web服务尝试登录到BO,而不是像它应该的那样定时或出错,BO java库永远挂起。显然,这是连接到一个半开始博,并永不放弃 环顾互联网,似乎其他人也经历过这种情况,但我所看到的任何一件事都没有建议如何

我们的项目将业务对象用于报告。我们启动报告的java web应用程序通过我们设置的web服务来处理我们希望如何启动它们的业务规则。很好用…只有一条皱纹

薄熙来似乎非常不可靠。在夜间定时重启后,该设备经常出现故障或无法启动。我们的行动小组已经习惯了这一事实

但是在java团队中,影响我的部分是我们的Web服务尝试登录到BO,而不是像它应该的那样定时或出错,BO java库永远挂起。显然,这是连接到一个半开始博,并永不放弃

环顾互联网,似乎其他人也经历过这种情况,但我所看到的任何一件事都没有建议如何设置登录过程的超时,以便在登录失败时,web服务不会永远锁定(这反过来会导致我们的应用服务器变得不稳定)

连接非常简单:

session = CrystalEnterprise.getSessionMgr().logon(boUserName, boPassword, boServerName, boSecurityType);
我所寻找的只是某种方法,以确保如果BO死了,我的Web服务不会随之消亡。超时…一种可靠地检测BO在尝试登录之前是否未启动和正常运行的方法…某种东西。我们的BO“专家”似乎认为他们对BO的不稳定性无能为力,他们对java库的了解甚至更少


想法?

Java SDK没有详细说明调用
登录时如何定义超时。我只能假设这意味着它会回到默认的网络连接超时

但是,如果建立了连接,但SDK没有收到所需的信息(并一直等待回答),则永远不会达到网络超时,因为这是应用程序问题,而不是网络问题

因此,唯一彻底的解决方案是处理BusinessObjects平台中的不稳定性(您应该为其创建一个单独的问题并更详细地描述该问题)

如果这不是一个选项,另一种选择是在单独的线程中启动连接尝试并自己实现超时,在达到预定义的超时时终止线程,并有选择地重试连接尝试几次

请记住,虽然初始登录可能会成功,但问题中描述的不稳定性可能会导致其他问题(例如,不同的SDK调用可能由于导致您的
登录
调用挂起的相同问题而永远挂起)


再次,唯一的好的解决办法是查看你的平台不稳定性<强> >的根源。

谢谢,线程的想法是好的,我们一定会考虑。我们知道,当我们的夜间数据库备份运行得有点长时,就会出现不稳定性,而BO会对此大发雷霆。我们的ops人员似乎只满足于按计划强制重新启动。除此之外,他们似乎对追求它不感兴趣。我们的应用程序出现了一个更优雅的失败,从而遏制了这种传染,这是我所能强迫的解决方案。