Products | Versions |
---|---|
TIBCO ActiveMatrix BusinessWorks | - |
Not Applicable | - |
Resolution:
Problem Description:
When attempting to start a BW engine, the engine would produce the following stack trace:
C:\TIBCO\tra\domain\NAB_PRD\application\CommonALE_core>"C:/tibco/bw/5.3/bin/bwengine.exe" --run --propFile "C:/tibco/tra/domain/NAB_PRD/application/CommonALE_core/CommonALE_core-CALE_svc.tra"
Using property file C:\tibco\tra\domain\NAB_PRD\application\CommonALE_core\CommonALE_core-CALE_svc.tra
Using work space directory C:\tibco\tra\domain\NAB_PRD\application\CommonALE_core\working\CommonALE_core-CALE_svc
Creating trace file C:\tibco\tra\domain\NAB_PRD\application\logs\CommonALE_core-CALE_svc.log
Using XMLReader org.apache.xerces.parsers.SAXParser
2007 Jun 27 11:09:10:671 GMT +10 BW.CommonALE_core-CALE_svc Info [BW-Core] BWENGINE-300001 Process Engine version 5.3.3, build V6, 2006-08-29
2007 Jun 27 11:09:10:671 GMT +10 BW.CommonALE_core-CALE_svc Info [BW-Core] BWENGINE-300009 BW Plugins: version 5.3.3, build V6, 2006-08-29
2007 Jun 27 11:09:10:671 GMT +10 BW.CommonALE_core-CALE_svc Info [BW-Core] BWENGINE-300010 XML Support: TIBCOXML Version 5.3.3.003 of Wed, Jul 19, 2006 11:36 PDT on golden
2007 Jun 27 11:09:10:671 GMT +10 BW.CommonALE_core-CALE_svc Info [BW-Core] BWENGINE-300011 Java version: Java HotSpot(TM) Server VM 1.5.0_06-b05
2007 Jun 27 11:09:10:671 GMT +10 BW.CommonALE_core-CALE_svc Info [BW-Core] BWENGINE-300012 OS version: x86 Windows 2003 5.2
2007 Jun 27 11:09:12:250 GMT +10 BW.CommonALE_core-CALE_svc Error [BW-Core] BWENGINE-100001 null
java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at com.tibco.security.impl.c.init(SecurityVendor.java)
at com.tibco.security.impl.c.init(SecurityVendor.java)
at com.tibco.security.impl.f.init(CryptoVendor.java)
at com.tibco.security.impl.f.getInstance(CryptoVendor.java)
at com.tibco.security.Crypto.undo(Crypto.java:75)
at com.tibco.security.ObfuscationEngine.decrypt(ObfuscationEngine.java:274)
at com.tibco.objectrepo.mapper.GSVMapper.prepareAssocFromXML(GSVMapper.java:170)
at com.tibco.objectrepo.mapper.NodesMapper.callPrepareAssocFromXML(NodesMapper.java:729)
at com.tibco.objectrepo.mapper.GSVMapper.map(GSVMapper.java:126)
at com.tibco.objectrepo.object.ObjectProvider.readDefaultVars(ObjectProvider.java:3453)
at com.tibco.objectrepo.object.ObjectProvider.loadDefaultVars(ObjectProvider.java:3394)
at com.tibco.objectrepo.object.ObjectProvider.loadDefaultVars(ObjectProvider.java:3389)
at com.tibco.objectrepo.object.ObjectProvider.loadDefaultVars(ObjectProvider.java:3389)
at com.tibco.objectrepo.object.ObjectProvider.loadDefaultVars(ObjectProvider.java:3389)
at com.tibco.objectrepo.object.ObjectProvider.loadDefaultVars(ObjectProvider.java:3389)
at com.tibco.objectrepo.object.ObjectProvider.<init>(ObjectProvider.java:142)
at com.tibco.pe.core.RepoLoader.<init>(RepoLoader.java:112)
at com.tibco.pe.PEMain.if(PEMain.java:272)
at com.tibco.pe.PEMain.a(PEMain.java:157)
at com.tibco.pe.PEMain.<init>(PEMain.java:144)
at com.tibco.pe.PEMain.main(PEMain.java:82)
Caused by: java.lang.SecurityException: Self-Integrity Check FAILED: java.lang.SecurityException: SHA1 digest error for org/w3c/www/http/HttpAcceptEncodingList.class
at com.entrust.toolkit.security.provider.JCEVerifierImpl.checkIntegrity(Unknown Source)
at com.entrust.toolkit.security.provider.Entrust.<init>(Unknown Source)
at com.entrust.toolkit.security.provider.Initializer.setProviders(Unknown Source)
at com.tibco.security.impl.entrust61.SecurityVendorImpl.<clinit>(SecurityVendorImpl.java:37)
... 23 more
The same EAR was deployed across 4 different machines. 2 of the BW engines are deployed into production machines, and the other 2 are deployed to their backup servers.
The problems of starting up the BW engine only happened on machineA. The same machine also has their primary TIBCO Admin server running. When the customer tried to restart their TIBCO Administrator, their Admin server was also showing similar stack trace to BW.
==================
Root cause analysis:
This exception is not due to any SSL certificates or difference in ear file between installations, but due to corruption of enttoolkit.jar in that particular installation. This particular jar file is a "signed" jar file from entrust, which means integrity checks have been put in place by entrust to make sure no class within this jar file gets updated or modified by anyone else other than entrust. This particular class HttpAcceptEncodingList.class has a SHA-1 digest of
Name: org/w3c/www/http/HttpAcceptEncodingList.class
SHA1-Digest: 6e5xuxCucpPs1wCYDY45mL5rjg0=
in the Manifest.mf file inside the enttoolkit.jar, if anybody updates or modifies or corrupts this class file, then SHA-1 digest of the new class will differ from that of the above value.
For example, I extracted this class out of enttoolkit.jar and modified the class constructor to include an extra println statement as below:-
HttpAcceptEncodingList()
{
a = null;
isValid = false;
System.out.println("HttpAcceptEncodingList initialized");
}
then recompiled this class and put it back into enttoolkit.jar. Now the SHA-1 digest of this class becomes
SHA1(HttpAcceptEncodingList.class)= 79d057aa23a03ec256801575dc7be332f105760a
which is different value from what is present it the jar manifest. One easy way to verify the integrity of any jar file is to use jarsigner tool from Sun. This tool will check this modified jar and throw the error below:-
C:\entrust>jarsigner -verify enttoolkit.jar -verbose
jarsigner: java.lang.SecurityException: SHA1 digest error for org/w3c/www/http/H
ttpAcceptEncodingList.class
Consequently, when you replace the original enttoolkit.jar from C:\TIBCO\tpcl\5.5\lib\entrust with the modified enttoolkit.jar and start any BW project, the below error will be thrown
-----------BW console-----------
2007 Jun 28 11:19:59:292 GMT -7 BW.BVISWANA-LT-T42 Error [BW-Core] BWENGINE-1000
01 null
java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at com.tibco.security.impl.c.init(SecurityVendor.java)
at com.tibco.security.impl.c.init(SecurityVendor.java)
at com.tibco.security.impl.f.init(CryptoVendor.java)
at com.tibco.security.impl.f.getInstance(CryptoVendor.java)
at com.tibco.security.Crypto.undo(Crypto.java:75)
at com.tibco.security.ObfuscationEngine.decrypt(ObfuscationEngine.java:2
74)
at com.tibco.plugin.share.security.IdentityUtilities.a(IdentityUtilities
.java:101)
at com.tibco.plugin.share.security.IdentityUtilities.a(IdentityUtilities
.java:77)
at com.tibco.plugin.share.security.IdentityUtilities.fetchIdentity(Ident
ityUtilities.java:65)
at com.tibco.plugin.tibrv.RVSSLContext.initializeRVForSSL(RVSSLContext.j
ava:59)
at com.tibco.plugin.NewRVResourceFactory.createResourceManagerInstance(N
ewRVResourceFactory.java:226)
at com.tibco.pe.core.Engine.getResourceInstance(Engine.java:417)
at com.tibco.plugin.tibrv.RVPubActivity.init(RVPubActivity.java:125)
at com.tibco.pe.core.TaskImpl.init(TaskImpl.java:300)
at com.tibco.pe.core.WorkflowBuilder.a(WorkflowBuilder.java:232)
at com.tibco.pe.core.WorkflowBuilder.build(WorkflowBuilder.java:145)
at com.tibco.pe.core.WorkflowLoader.setWorkflows(WorkflowLoader.java:113
)
at com.tibco.pe.core.WorkflowLoader.loadWorkflows(WorkflowLoader.java:86
)
at com.tibco.pe.core.JobPoolConfigurator.a(JobPoolConfigurator.java:192)
at com.tibco.pe.core.JobPoolConfigurator.do(JobPoolConfigurator.java:100
)
at com.tibco.pe.core.JobPool.<init>(JobPool.java:302)
at com.tibco.pe.core.JobPoolCreator.init(JobPoolCreator.java:81)
at com.tibco.pe.core.JobPoolCreator.<init>(JobPoolCreator.java:73)
at com.tibco.pe.PEMain.if(PEMain.java:319)
at com.tibco.pe.PEMain.a(PEMain.java:161)
at com.tibco.pe.PEMain.<init>(PEMain.java:148)
at com.tibco.pe.PEMain.main(PEMain.java:86)
Caused by: java.lang.SecurityException: Self-Integrity Check FAILED: java.lang.S
ecurityException: SHA1 digest error for org/w3c/www/http/HttpAcceptEncodingList.
class
at com.entrust.toolkit.security.provider.j.a(Unknown Source)
at com.entrust.toolkit.security.provider.Initializer.checkToolkitIntegri
ty(Unknown Source)
at com.entrust.toolkit.security.provider.Entrust.<init>(Unknown Source)
at com.entrust.toolkit.security.provider.Initializer.setProviders(Unknow
n Source)
at com.tibco.security.impl.entrust61.SecurityVendorImpl.<clinit>(Securit
yVendorImpl.java:37)
... 29 more
job dispatcher with 8 threads, max queued = 0
2007 Jun 28 11:20:18:195 GMT -7 BW.BVISWANA-LT-T42 Info [BW-Core] BWENGINE-30000
6 Engine BVISWANA-LT-T42 terminating
----------------------------------------------------------
So, the resolution of this problem is to replace the faulty enttoolkit.jar from TPCL that is being used by Adminsitrator and BW with the enttoolkit.jar from an installation where this project starts up fine or they can reinstall TRA.