CA Gen Web Client fails to call Gen EJB under JBoss EAP 7.1 (EJBCLIENT000079) & WildFly 10.1 (EJBCLIENT000025)

Document ID : KB000124858
Last Modified Date : 17/01/2019
Show Technical Document Details
Issue:
Gen Web Generation client call to Gen EJB server procedure step SERVER1 (Server Manager SVR1) which has been deployed to JBoss EAP 7.1 in file cstest.ear receives message:

TIRM037E: Fatal Error was encountered ***
TIRM158E: A communication error was encountered on the client
[Function: EJBRMIDynamicCoopFlow.processException.EJBRMI.Exception]javax.ejb.NoSuchEJBException: EJBCLIENT000079: Unable to discover destination for request for EJB StatelessEJBLocator for "/SVR1/SERVER1", view is interface cstest.SERVER1_Remote, affinity is None
TIRM046E: Processing terminated ***



Similar message received for EJB deployment under WildFly 10.1:

TIRM037E: Fatal Error was encountered ***
TIRM158E: A communication error was encountered on the client
[Function: EJBRMIDynamicCoopFlow.processException.EJBRMI.Exception]java.lang.IllegalStateException: EJBCLIENT000025: No EJB receiver available for handling [appName:, moduleName:SVR1, distinctName:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@4b94e676
TIRM046E: Processing terminated ***


 
Environment:
CA Gen 8.6
JBoss EAP 7.1 with required PTFs installed.
WildFly 10.1 with required PTFs installed.
Cause:
The errors are due to using the standard syntax "*=EJBRMI" in the commcfg.properties file referenced by the Gen Web client.
 
Resolution:
When calling an EJB under JBoss or Wildfly the EJBRMI reference for the transaction/trancode lookup must contain the ear file name i.e.
JBoss: <TRANCODE>=EJBRMI J {EARFileName} 
WildFly: <TRANCODE>=EJBRMI W {EARFileName} 

So for this example these values should be used:
JBoss: "*=EJBRMI J cstest"
WildFly: "*=EJBRMI W cstest"

NOTE: The ear file name should not contain the extension '.ear' otherwise similar errors will continue to occur.
The ear file name with no extension will match the node for the deployed EJB global reference as seen in the server.log file e.g. "java:global/cstest/SVR1/SERVER1!cstest.SERVER1_Remote"
"java:global/cstest/SVR1/SERVER1!cstest.SERVER1_Local"
Additional Information:
Gen 8.6 documentation references:
"Developing Working with Build Tool > EAR File Assembling > WildFly Considerations"
https://docops.ca.com/ca-gen/8-6/en/developing/working-with-build-tool/ear-file-assembling#EARFileAssembling-WFCWildFlyConsiderations

"Distributed Processing > Working With Distributed Processing > Overriding Communications Support at Execution Time > Execution Time Configuration > Comm Config Files > Transaction Routing"
https://docops.ca.com/ca-gen/8-6/en/distributed-processing/working-with-distributed-processing/overriding-communications-support-at-execution-time#OverridingCommunicationsSupportatExecutionTime-TransactionRouting

"Distributed Processing > Working With Enterprise JavaBeans > Converter Services > How to Configure C to the Java RMI Coopflow > Change commcfg.ini File"
https://docops.ca.com/ca-gen/8-6/en/distributed-processing/working-with-enterprise-javabeans/converter-services/how-to-configure-c-to-the-java-rmi-coopflow