Gen client/server EJBRMI under Liberty shows EJBRMIBeanInstance.doFlow exception
search cancel

Gen client/server EJBRMI under Liberty shows EJBRMIBeanInstance.doFlow exception

book

Article ID: 381547

calendar_today

Updated On:

Products

Gen Gen - Run Time Distributed

Issue/Introduction

After installing Gen 8.6 Liberty Support Phase 1 PTFs:

  1. Using copy of Gen 8.6 sample model with name samptest.ief.

  2. The %Gen86%\Gen\commcfg.properties file has this entry to use EJBRMI for the client/server connection:
    *=EJBRMI Y samptest

  3. Generated and built cooperative Window Manager W900 and Server Manager P900 with TP Monitor INTRANET and EJB Web Services respectively.
    Have assembled using separate .ear files for client and server.
    The server .ear file has name samptest.ear to match the above commcfg.properties file entry.
    The client .ear file has a genrt.jar file that includes the above commcfg.properties file.

  4. Deployed both .ear files to WebSphere Liberty Application Server.
    Test web client using: http://localhost:9080/samptest/g900.jsp
    When try to use List > Divisions receive error:



TIRM030E: Application failed - Updates have been backed out
TIRM031E: Failing procedure exit data follows:
TIRM032E: Last or current action block id = 0022020129
TIRM033E: Last or current action block name = CLIENT_MAINTAIN_DIVISION
TIRM034E: Last or current database statement = 0
TIRM035E: Current statement being processed = 0000000037
TIRM037E: Fatal Error was encountered ***
TIRM158E: A communication error was encountered on the client
[Function: EJBRMIBeanInstance.doFlow]Exception attempting to call 'call'
com.ca.gen.csu.exception.CSUException: [Function: EJBRMIBeanInstance.doFlow]Synchronous Use Of: Action Block "com.ca.EJSLocal0SLSERVER_MAINTAIN_DIVISION_50fdd963" Parameter [0] com.ca.gen.odc.coopflow.ejbrmi.EJBRMIRequest is not the same as com.ca.SERVERMA_IA
TIRM046E: Processing terminated ***
TIRM044E: Press OK to continue ***

Environment

Gen 8.6 Java web client and EJB (EJB Web Services) server using EJBRMI communications.

Cause

For Phase 1 of Gen Liberty support does not include support for EJBRMI Cooperative Flows using the Remote Interface of the EJB. If using EJBRMI Cooperative Flows, the clients and the servers both need to be assembled in the same .ear file so the EJB’s Local Interface can be used. 
See file commcfg.properties comments for further details

# For EJBRMI the format is:
...
#        For Liberty, when client and server are assembled in the same EAR, the format is:
#           <TRANCODE>=EJBRMI Y {EARFileName}
#                             Y                     : Flag for connecting to Liberty
#                             EARFileName           : Name of the server ear File

...

# For Web Services the format is:
#           <TRANCODE>=WS <baseURL> <contextType>
#                     baseURL: Scheme, Domain and Port of a Web Service end point URL
#                          ex: http://<hostname>:<port>
#                     contextType: part of the path of a Gen Web Service end point URL
#                          'P' to use ProcedureStep Name (with WebLogic)
#                          'W' to use ProcedureStep Name and LoadModule Name (with WildFly)
#                          'J' to use ProcedureStep Name and LoadModule Name (with JBoss EAP)
#                          'L' to use LoadModule Name (with Traditional WebSphere or with the Transaction Enabler (TE))
#                          'Y' to use LoadModule Name (with Liberty)

Resolution

  1. Using the original commcfg.properties file with client and server assembled in the same samptest.ear file the "List > Divisions" call was successful:



  2. Also after changing the commcfg.properties file to have this entry and using separate .ear files the "List > Divisions" call was successful:
    *=WS http://localhost:9080 Y


Update October 6, 2025:
Liberty Phase 2 PTFs are now released which supports the EJBRMI Remote Interface i.e. client and server can be in separate .ear files (Gen 8.6 Solutions & Patches)
The commcfg.properties file comments have also been updated:

#        For Liberty, when client and server are assembled in the same EAR, the format is:
#           <TRANCODE>=EJBRMI Y <EARFileName>
#                             Y                     : Flag for connecting to Liberty
#                             EARFileName           : Name of the server ear File. File name is case sensitive. Must match ear file name used
#                                                       at assembly time
#        For Liberty, when client and server are assembled in separate EARs and deployed in different/same Liberty instances, the format is:
#           <TRANCODE>=EJBRMI Y <Name Manager URL> <EARFileName>
#                             Y                     : Flag for connecting to Liberty
#                             Name Manager URL      : <hostname>:<IIOP port>
#                                                       For example: hostname.company.net:2809
#                             EARFileName           : Name of the server ear File. File name is case sensitive. Must match ear file name used
#                                                       at assembly time
#                NOTE:
#                Please note Liberty does not make use of an Initial Context Factory class.


Therefore an example of a correct format commcfg.properties file entry would be:

*=EJBRMI Y fqdn:2809 server_ear_file
(fqdn is the Fully Qualified Domain Name of the Liberty EJB server instance host)

Additional Information