Crystal Report java库,登录永远挂起

时间:2015-10-07 13:00:54

标签: java web-services crystal-reports business-objects

我们的项目使用Business Objects进行报告。我们启动报告的java webapps是我们设置的Web服务,用于处理我们想要启动它们的业务规则。效果很好......有一条皱纹。

BO似乎非常不可靠。在夜间定时重启后,事情经常发生故障或未能出现。我们的Ops团队已经习惯了这一点作为生活中的事实。

但是在java团队中影响我的部分是我们的web服务尝试登录到BO,而不是像我们那样计时或错误,BO java库永远挂起。显然它正在连接到半开始的BO,并且永不放弃。

环顾互联网,似乎其他人已经体验过这一点,但我看到的一切都没有建议如何在登录过程中设置超时,以便在失败时,Web服务不会永久锁定(反过来可能会导致我们的应用服务器变得不稳定。)

连接非常简单:

session = CrystalEnterprise.getSessionMgr().logon(boUserName, boPassword, boServerName, boSecurityType);

所有我想要的是确保如果BO死了,我的网络服务不会因此而死。超时...在尝试登录之前可靠地检测BO是否未启动和健康的方法....我们的BO“专家”似乎并不认为他们可以对BO的不稳定性做些什么,他们对Java库的了解甚少。

想法?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

请注意,虽然初始登录可能会成功,但问题中描述的不稳定性可能会导致其他问题(例如,由于导致logon调用的同一问题,不同的SDK调用可能会永远停止挂)。

同样,唯一的好办法是查看平台不稳定性的根本原因