Configuring the JGroups Bind Address

Understanding JGroups the Bind Address

SAS middle-tier applications use JGroups to perform multicast communication between applications and to perform caching of application properties. The JGroups software binds to the IP address of first non-loopback network interface that it can detect on the machine. Many machines have multiple network interfaces (multihomed), and each network interface has its own IP address. In some cases, the Web application server selects the value of InetAddress.getLocalHost().getHostName() as the bind address to use for multicast communication and SAS Remote Services selects a different IP address to bind to.
Multicast communication does not function correctly if the IP address selected by JGroups for SAS Remote Services does not match the IP address selected by the Web application server. One indication of a mismatch is an error message that appears in the Web application server log file. See the following example:
13:39:35,602 ERROR [ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean
definition with name 'dashboardServices' defined in ServletContext resource
[/WEB-INF/spring-config/services-config.xml]: Could not resolve placeholder 'metadata.user'


ERROR [main] – ****************************************************************
ERROR [main] – Required entry, '/sas/properties/environment', not found in the cache.
ERROR [main] – Possible causes include: the RemoteServices VM is not started or
ERROR [main] – there is a multicast address/port mismatch; using 
ERROR [main] – address=239.168.68.1 and port=8561.
ERROR [main] – ****************************************************************
Set the bind address for SAS Remote Services, the Web application server, and the SAS BI Report Services Report Generation tool if the previous error message is seen.

Setting the Bind Address for SAS Remote Services

  1. For deployments on Windows, edit the SAS-config-dir\Lev1\Web\Applications\RemoteServices\wrapper.conf file. Add a wrapper.java.additional.nn entry that is similar to the following:
    wrapper.java.additional.12=-Dlog4j.configuration="..."
    wrapper.java.additional.13=-Djgroups.bind_addr=ip-address
  2. Edit the SAS-config-dir\Lev1\Web\Applications\RemoteServices\RemoteService.bat file. Add the JVM option in the start2 section:
    :start2
       start "SAS Remote Services" "%JAVA_JRE_COMMAND%" ^
       -classpath "%CLASSPATH%" ^
       -Dsas.ext.config="C:\Program Files\SASHome\sas.java.ext.config" ^
       -Djgroups.bind_addr=ip-address
  3. Restart SAS Remote Services.

Setting the Bind Address for JBoss Application Server

  1. For deployments on Windows, edit the JBOSS_HOME\server\SASServer1\wrapper.conf file. Add a wrapper.java.additional.nn entry that is similar to the following:
    wrapper.java.additional.33=-Dcom.sas.log.config.url=file:///C:/SAS/Config...
    wrapper.java.additional.34=-Djgroups.bind_addr=ip-address
  2. Edit the JBOSS_HOME\bin\SASServer1.bat file. Add the JVM option to the JAVA_OPTS variable:
    set JAVA_OPTS=-Djgroups.bind_addr=ip-address -Xms256m -Xmx512 ...
  3. Restart the Web application server.

Setting the Bind Address for Oracle WebLogic Server

  1. Edit the SAS-config-dir\Lev1\Web\SASDomain\bin\setDomainEnv.cmd file. Add the JVM option to the USER_MEM_ARGS variable for SASServer1:
    if "%SERVER_NAME%" == "SASServer1" (
       set USER_MEM_ARGS=-Djgroups.bind_addr=ip-address -Dsas.server.name=Server
  2. Use the WebLogic Server administration console to access the Server Start tab for SASServer1.
  3. Add -Djgroups.bind_addr=ip-address to the Arguments field.
  4. Restart the Web application server.

Setting the Bind Address for IBM WebSphere Application Server

  1. Use the Integrated Solutions Console to access the Java Virtual Machine for the application server.
  2. Add -Djgroups.bind_addr=ip-address to the Generic JVM arguments field.
  3. Restart the Web application server.

Setting the Bind Address for the Report Output Generation Tool

  1. Edit the SAS-install-dir\SASBIReportServices\4.31\outputgen.ini file.
  2. Add a JavaArgs_nn entry that is similar to the following:
    JavaArgs_13=-Dsas.app.launch.picklist=picklist;"help\primary.picklist"
    JavaArgs_14=-Djgroups.bind_addr=ip-address
    Classpath=-cp "<VJRHOME>/eclipse/plugins/sas.launcher.jar"