Should the @Clustername be Used When Logging On using BusinessObjects Enterprise XI Release 2 Java SDK?
[businessobjects] [businessobjects xi] [logging] [show logging]
Related:
- BusinessObjects Enterprise XI R2 BIPlatform Web Services – How do you Determine If a Parameter is Used in a Crystal Report?Symptom BusinessObjects Enterprise XI Release 2 BIPlatform Web Services Java...
- How to run the BusinessObjects servers on domain account?Symptom BusinessObjects Enterprise (BOE) services run under the ‘localsystem’ account...
- How to configure XI 3.1 Query Builder tool to communicate to BusinessObjects Enterprise using SSL?Symptom BusinessObjects Enterprise XI 3.1 servers configured to use SSL...
- How to hide the Information OnDemand icon/link in BusinessObjects XI Release 2 Service Pack 3 InfoView on WebSphereSymptom How to hide theInformation OnDemandicon/link in BusinessObjects XI Release...
Symptom
Logon using the CMS cluster name (@clustername) fails with Enterprise Java SDK.Logon succeeds when a member CMS name.Why does the @clustername logon fail?
Cause
Enterprise Java SDK XI Release 2 and older do not persist CMS cluster member lists between application startup.Whenever an Enterprise Java SDK is started up, it must be ‘bootstrapped’ – connect to a member CMS nameserver, to retrieve the cluster name and CMS members in the cluster, that it persists in memory.After ‘bootstrapping’, the @clustername will work.Enterprise COM and .NET SDK persist the CMS cluster member list in memory.Enterprise Java SDK XI 3.x and newer persist the CMS cluster member in a dotfile.
Resolution
Store the list of CMS member in your Java application, and round-robin attempt to log onto each member, till a successful logon is attained:
final String[] CMS_MEMBERS = {"cms_one", "cms_two"};
IEnterpriseSession enterpriseSession = null;
for(int i = 0, m = CMS_MEMBERS.length ; i < m ; i++) {
?try {
?enterpriseSession = CrystalEnterprise.getSessionMgr().logon(username, password, CMS_MEMBERS[i], authenticationType);
?break;
?} catch(Exception e_maybe_cms_is_down) {
?// log here
?}
}
if(enterpriseSession == null) {
?throw Exception("Could not log onto CMS cluster.");
}