How to Ensure that JVM Arguments Required by LiveCycle Cluster are Picked up by JBoss

I came across an interesting customer situation recently where the IDP Scheduler Service was not starting in cluster mode. Please refer here to learn more on the IDP Scheduler service cluster mode.

The customer was using a 2-node JBoss cluster with TCP Locators for Gemfire. If you are using a TCP locator for clustering, you need a quick fix (QF) corresponding to your LiveCycle version to make gthe Scheduler work in clustered mode.
e.g. For LC ES2.5 (i.e. ES2 SP2), you need to apply LC_9.0.0.2_QF_2.44.

For this particular environment, the IDP Scheduler service was not starting in clustered mode, despite successfully installing the quick fix. After closely inspecting the server logs for both nodes, we noticed that both nodes were being recognized as “adobejb_server1″.

The following line in the log confirms that:

com.adobe.serverInstanceId……………….: adobejb_server1

In a cluster, you want all your nodes to have unique names. You need to set JVM argument -Dadobeidp.serverName in the server startup script to accomplish that. Apart from the server node name, there are multiple other parameters you need to set in JBoss run.bat/.sh, to setup a LiveCycle cluster successfully.

The interesting thing in this scenario was that all JVM startup arguments were correct. However they were set in an incorrect location in the server.bat files. Due to that JVM startup arguments were not getting picked up during the JBoss startup sequence.

The original line in the run.bat looked like this:
if exist “%JBOSS_HOME%\bin\native” set JAVA_OPTS=%JAVA_OPTS%
There was no file named “%JBOSS_HOME%\bin\native” existing on that environment, hence that part of the script was skipped.

We moved the argument set to a new line; restarted cluster and the Scheduler service got started in clustered mode.

Example of valid JVM arguments in this case

set JAVA_OPTS=%JAVA_OPTS% -Djboss.partition.name=cluster_lc9 -Dadobeidp.serverName=server2 -Djava.net.preferIPv4Stack=true -Dadobe.cache.cluster-locators=[22345],[22345] -XX:MaxPermSize=512m -Xms256m -Xmx1792m

It’s important to set JVM arguments correctly; and to set those in the right place to be picked up during the start-up sequence.

VN:F [1.9.22_1171]
Was this helpful? Please rate the content.
Rating: 0.0/10 (0 votes cast)

About Santosh Tatke

Santosh Tatke is a Sr. Support Architect at Adobe Systems. He specializes in ADEP (formerly LiveCycle) technology stack and works closely with customers, solution consultants and partners to troubleshoot, analyze and resolve technical challenges during POC, implementation, deployment or upgrade. He is a Certified LiveCycle ES2.5 Process Management Expert.
This entry was posted in Adobe LiveCycle ES2 (9.0.x), General Interest and tagged , , , . Bookmark the permalink.

One Response to How to Ensure that JVM Arguments Required by LiveCycle Cluster are Picked up by JBoss

  1. Ameeth Palla says:

    I solved an issue based on the value of com.adobe.serverInstanceId parameter in server log. it was set to: com.adobe.serverInstanceId……………….: adobejb_null

    Checking the run.bat files revealed the following –
    set JAVA_OPTS=%JAVA_OPTS% -Dadobeidp.serverName=crmasolb03
    set JAVA_OPTS=-Djboss.partition.name=ALC-OLB-PRE -Dadobe.cache.multicast-port=44502

    The issue was that the second set JAVA_OPTS line did not have the %JAVA_OPTS% in it. So, it basically had over written the JAVA_OPTS values to just the values in the second line. To correct this just had to add %JAVA_OPTS% to the second line as well.

    So after correcting, it appeared as below:
    set JAVA_OPTS=%JAVA_OPTS% -Dadobeidp.serverName=crmasolb03
    set JAVA_OPTS=%JAVA_OPTS% -Djboss.partition.name=ALC-OLB-PRE -Dadobe.cache.multicast-port=44502