LiveCycle Cluster – TCP based JBoss Clustering

Adobe LiveCycle comes with pre-configured JBoss (Community Edition only) . The preconfigured JBoss has both standalone and cluster-enabled configurations. All cluster-enabled configurations are based on UDP by default. Various enterprise organizations have very restrictive network policy and don’t allow multicasting in their networks. For such organizations, TCP based clustering is recommended option. JBoss instances belonging to different subnets require TCP based clustering only. In this article, we will go through detailed instructions to configure TCP based JBoss cluster. These instructions are applicable for both preconfigured JBoss and downloaded JBoss (Version 5.1 only).

The Following are the detailed instructions for TCP Clustering:

  1. On each cluster node, open deploy/cluster/jgroups-channelfactory.sar/META-INF/jgroups-channelfactory-stacks.xml file and comment out MPING and uncomment TCPPING in tcp stack section as shown below.


    <stack name=”tcp”
    description=”TCP based stack, with flow control and message bundling.
    TCP stacks are usually used when IP multicasting cannot
    be used in a network, e.g. because it is disabled (e.g.
    routers discard multicast)”>
    <!– Alternative 1: multicast-based automatic discovery. –>
    <!–<MPING timeout=”3000″
    ip_ttl=”${jgroups.udp.ip_ttl:2}”/>  –>
    <!– Alternative 2: non multicast-based replacement for MPING. Requires a static configuration
    of *all* possible cluster members. –>
    <TCPPING timeout=”3000″

    In uncommented TCPPING section, replace default initial host lists by comma separated list of all cluster nodes (bind address and jgroups tcp stack port combination). Example of the configuration is shown below.


    Note: You can skip initial_hosts change, an alternate approach is to pass jvm argument -Djboss.jgroups.tcp.tcpping.initial_hosts=node1[7600],node2[7600] while starting each JBoss instance.

  2. On each cluster node, open deploy/cluster/jboss-cache-manager.sar/META-INF/jboss-cache-manager-jboss-beans.xml file and replace all Jboss.default.jgroups.stack:udp entries by jboss.default.jgroups.stack:tcp

    Note: You can skip this configuration change, an alternate approach is to pass jvm argument -Djboss.default.jgroups.stack=tcp while starting each JBoss instance.

  3. [Optional]The default jgroups tcp stack port is 7600. If you want to change the default value, you need to modify conf/bindingservice.beans/META-INF/ bindings-jboss-beans.xml file. Change the port value in the following section.


    <bean class=””>
    <property name=”serviceName”>JGroups</property>
    <property name=”bindingName”>tcp-bind_port</property>
    <property name=”port”>7600</property>
    <property name=”hostName”>${jboss.jgroups.bind.address,jboss.bind.address}</property>
    <property name=”description”>The port used for the JGroups ‘tcp’ stack</property>


  4. Start JBoss instances on all cluster nodes.
  5. All nodes join each other on jgroups tcp stack port to form cluster. Server.log can be viewed to confirm this.
VN:F [1.9.22_1171]
Was this helpful? Please rate the content.
Rating: 8.0/10 (5 votes cast)
LiveCycle Cluster – TCP based JBoss Clustering, 8.0 out of 10 based on 5 ratings

About Pankaj Parashar

Pankaj Parashar is a Lead Software Engineer at Adobe Systems. He is working for Adobe LiveCycle Enterprise Suite. He looks after cluster deployments and LiveCycle SDK testing. His interests include programming, cloud, big data and analytics. He is based out of Noida, India.
This entry was posted in Adobe LiveCycle ES3 and tagged , , , , . Bookmark the permalink.

Comments are closed.