Strange failure on Linux

Hi,

I get the strange failure when running on Linux.
The application is a document batch loading app for our Documentum implementation.

The qualification is as simple as: fls_instruction where r_object_id = '0900138d81a3c533'

IDfSysObject dctmSysObject = (IDfSysObject)DocumentumHelper.getCurrentSession().getObjectByQualification(strQry.toString());

The above code is running fine on Windows with the same java version 17.0.5 and I also tried the later 17.0.9.+8 same issue.

BTW The linux version is Oracle 9.3 server with GUI.
If I run the same code on an Oracle Linux 9.3 server WITHOUT GUI it runs just fine.

The class com.tieto.flsdoc.tbo.FlsEnterpriseImpl is the custom implementation to Webtop so it's not something referenced in my project but is a class for Webtop.

The Java VM arguments is: -Djava.locale.providers=COMPAT,SPI --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED

Itr's need to be able to apply the lifecycle to the documents.

Any clues?

BR Hans

2024.01.08 17:05:26.501 [ERROR] com.fls.docloader.delivery.helper.AttributeValueMappingHelper [] getSysObjectFromDocumentIdentifier>: Error while validating document
com.documentum.fc.common.DfException: [DM_DFC_E_CLASS_NOT_FOUND]error: "Unable to instantiate the necessary java class: com.tieto.flsdoc.tbo.FlsEnterpriseImpl"
at com.documentum.fc.client.impl.bof.compoundclass.CompoundClassMgr.loadTboClass(CompoundClassMgr.java:332) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.compoundclass.CompoundClassMgr.getTboClass(CompoundClassMgr.java:246) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.compoundclass.CompoundClassMgr.getTboClass(CompoundClassMgr.java:238) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.compoundclass.CompoundClassMgr.getImpClass(CompoundClassMgr.java:81) ~[dfc.jar:?]
at com.documentum.fc.client.impl.objectmanager.AbstractPersistentObjectFactory.getCompoundClassEntry(AbstractPersistentObjectFactory.java:39) ~[dfc.jar:?]
at com.documentum.fc.client.impl.objectmanager.PObjectFactoryWithAspects.makeObject(PObjectFactoryWithAspects.java:49) ~[dfc.jar:?]
at com.documentum.fc.client.impl.objectmanager.PersistentObjectManager.getObjectFromServer(PersistentObjectManager.java:356) ~[dfc.jar:?]
at com.documentum.fc.client.impl.objectmanager.PersistentObjectManager.getObject(PersistentObjectManager.java:311) ~[dfc.jar:?]
at com.documentum.fc.client.impl.session.Session.getObject(Session.java:965) ~[dfc.jar:?]
at com.documentum.fc.client.impl.session.SessionHandle.getObject(SessionHandle.java:653) ~[dfc.jar:?]
at com.fls.docloader.core.service.DocumentumCoreServiceImpl.getLatestSysObjectFromDocumentIdentifier(DocumentumCoreServiceImpl.java:2432) ~[classes/:?]
at com.fls.docloader.core.service.DocumentumCoreServiceImpl.validateDocumentForProcessing(DocumentumCoreServiceImpl.java:3223) ~[classes/:?]
at com.fls.docloader.core.service.DocumentumCoreServiceProxy.validateDocumentForProcessing(DocumentumCoreServiceProxy.java:178) ~[classes/:?]
at com.fls.docloader.delivery.processor.RequestProcessor.run(RequestProcessor.java:123) ~[classes/:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: java.lang.ClassNotFoundException: com.tieto.flsdoc.tbo.FlsEnterpriseImpl
at com.documentum.fc.client.impl.bof.classmgmt.transformer.TBOTransformer.transform(TBOTransformer.java:44) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.classmgmt.AbstractTransformingClassLoader.findClass(AbstractTransformingClassLoader.java:94) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.classmgmt.DelayedDelegationClassLoader.loadClass(DelayedDelegationClassLoader.java:147) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.classmgmt.AbstractTransformingClassLoader.loadClass(AbstractTransformingClassLoader.java:68) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.classmgmt.SelectiveTransformingClassLoader.loadClass(SelectiveTransformingClassLoader.java:59) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.compoundclass.CompoundClassMgr.loadTboClass(CompoundClassMgr.java:327) ~[dfc.jar:?]
... 18 more
Caused by: com.documentum.thirdparty.javassist.NotFoundException: com.tieto.flsdoc.tbo.FlsEnterpriseImpl
at com.documentum.thirdparty.javassist.ClassPool.get(ClassPool.java:450) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.classmgmt.transformer.TBOTransformer.getInitialCtClass(TBOTransformer.java:81) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.classmgmt.transformer.TBOTransformer.transform(TBOTransformer.java:40) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.classmgmt.AbstractTransformingClassLoader.findClass(AbstractTransformingClassLoader.java:94) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.classmgmt.DelayedDelegationClassLoader.loadClass(DelayedDelegationClassLoader.java:147) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.classmgmt.AbstractTransformingClassLoader.loadClass(AbstractTransformingClassLoader.java:68) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.classmgmt.SelectiveTransformingClassLoader.loadClass(SelectiveTransformingClassLoader.java:59) ~[dfc.jar:?]
at com.documentum.fc.client.impl.bof.compoundclass.CompoundClassMgr.loadTboClass(CompoundClassMgr.java:327) ~[dfc.jar:?]
... 18 more

Best Answers

  • I'm confused here.

    com.tieto.flsdoc.tbo.FlsEnterpriseImpl seems to be a Type Based Object (TBO) implementation class, nothing specific to Webop. Unless it requires some Webtop classes/jars to run….. You might want to check that with Tieto

    There could be multiple reasons why it can't be instantiated

    The most obvious and common reason for this kind of issue being that the Global Registry is not properly configured in your DFC's dfc.properties

    Another reason could be that it depends on other java classes/jar files and those are not deployed as part of the BOF registry. That means you'd need to get those JARs/classes on the machine running your Java app and add them to your classpath when running your app.

    Could be a simple compatibility issue in the Java versions used to compile your app, the Tieto classes and DFC.

    I guess the only thing you can control about that is the version of Java you use to compile. That should be the version of Java mention in the DFC documentation, not any other….

  • Are your TBO's interface jar in your classpath when running the app?

    I have noticed that the BOF stuff will redownload them in its cache but if your own class can't instantiate it, then it won;t even go that far. If it is found by your class, then the BOF will take over and cache the implementation and interface jar files and handle them….

Answers

  • I'm confused here.

    com.tieto.flsdoc.tbo.FlsEnterpriseImpl seems to be a Type Based Object (TBO) implementation class, nothing specific to Webop. Unless it requires some Webtop classes/jars to run….. You might want to check that with Tieto

    There could be multiple reasons why it can't be instantiated

    The most obvious and common reason for this kind of issue being that the Global Registry is not properly configured in your DFC's dfc.properties

    Another reason could be that it depends on other java classes/jar files and those are not deployed as part of the BOF registry. That means you'd need to get those JARs/classes on the machine running your Java app and add them to your classpath when running your app.

    Could be a simple compatibility issue in the Java versions used to compile your app, the Tieto classes and DFC.

    I guess the only thing you can control about that is the version of Java you use to compile. That should be the version of Java mention in the DFC documentation, not any other….

  • I suspected something like you suggest.
    What is strange to me is that the same OS is not acting the same way (It's from the same ISO install).
    Thanks for your help.

  • Maybe it's not about the OS, maybe it's Java or DFC related… Who knows.

  • Assuming you are using BOF2 to install/deploy TBOs, it sounds like it might be a global registry problem. I am assuming for your "machines" you have:

    Assuming the Linux and Windows mentioned above are client machines and are using the same repository right (not one DCTM server Windows, One DCTM Linux)?

    Somewhere in the startup of the log when DFC gets initiatized it should throw something like this:
    DFC_BOF_GLOBAL_REGISTRY_UNAVAILABLE

    That is only displayed at startup so later on, since the BOF jars did not download, you will get CLASS NOT FOUND (like you have above).

    You can check your DFC cache directory to see what BOF items have been downloaded. An example of mine looks like this:

    The "content.xml" file (last on the list above) will let you know what modules were downloaded and installed.

    If you are not using BOF2 (distribution of modules by the global registry) and instead using BOF1 (manual distribution), you will have to ensure your TBO module jars are in your classpath.

  • Are your TBO's interface jar in your classpath when running the app?

    I have noticed that the BOF stuff will redownload them in its cache but if your own class can't instantiate it, then it won;t even go that far. If it is found by your class, then the BOF will take over and cache the implementation and interface jar files and handle them….

  • Sorry, for the late responce.

    Your suggestions was right it was the BOF cache.
    When I deleted the content in \Documentum\cache everything worked fine.
    The TBO was created with Java 11 so I also had to convert my application to Java 11 (it was compiled in Java 17)

    Thank you very much for your help.