2.4.2 Domain configuration for OHI Components
This chapter contains directions for the following topics:
- Redirecting console log output
- Setting up OHI Value-Based Payments properties files
- Coherence settings
- Setting OHI Domain environment variables
2.4.2.1 Redirect JVM Output to a Log File
By default, the JVM output for a WebLogic server is written to the console.
It is recommended to redirect the console output to file.
Note that in development mode, the default size of a logfile before it is
rotated is only 500Kb. Hence, it is also recommended to change the size of the
log files before rollover to 10240 Kb and to specify the number of log files
that will be retained. These configuration settings can be changed through the
WebLogic Server Console.
2.4.2.2 Setting up Oracle Health Insurance Value-Based Payments Properties Files
Create a directory that will hold Oracle Health Insurance Value-Based Payments properties and configuration files. This directory will be referenced as <CONFIG_ROOT> throughout this document.
Copy the following files that were delivered as part of the specific release from the <OHI_ROOT>/properties directory to the<CONFIG_ROOT>:
- logback.xml
- ohi-vbp.properties.template
Rename the copied ohi-vbp.properties.template to ohi-vbp.properties. A description of the properties file is available as an appendix in this guide.
Also copy file <OHI_ROOT>/util/security/ohi-security.config to the <CONFIG_ROOT>.
2.4.2.3 Coherence settings
OHI Components applications use Oracle Coherence. The IT infrastructure on which the system is installed determines the configuration for Oracle Coherence. Coherence Cluster settings are maintained using the WebLogic Administration Console. This paragraph describes the following configuration options:
- Control multiple Coherence clusters that are spread across multiple machines
- Control multiple Coherence clusters that are executed on one machine
- Specific settings for running Coherence in a Production environment
Define a Coherence Cluster for OHI Components
Oracle recommends to create an application-specific Coherence cluster that will be associated with the (application-specific) WebLogic Cluster in which the OHI Components application is executed. For example: for Oracle Health Insurance Value-Based Payments, create an vbp_cluster and an vbp_coherence_cluster. Associate the vbp_cluster with the vbp_coherence_cluster using the WebLogic Administration Console: navigate to the vbp_cluster, under the Configuration tab select the Coherence sub tab and select the vbp_coherence_cluster from the Coherence Cluster drop down list. Make sure to enable Local Storage Enabled. The provided WLST scripts generate such a setup.
Run multiple Coherence clusters of multiple JVMs on the same machine or same set of machines
In order to control which JVMs can join in a particular Coherence cluster, the following options are available:
- Use multicast addressing and have every member that needs to join the cluster define the cluster name
- Use the Coherence Well Known Addresses (WKA) feature
Use your feature of choice to:
- Control multiple Coherence clusters that are spread across multiple machines
- Control multiple Coherence clusters that are executed on one machine
Example: use Well Known Addresses to Control which Members are allowed to join a Coherence Cluster
Assuming a WebLogic cluster vbp_cluster that consists of the following server members:
- An Administration Server
- Two Managed Servers, vbp_node1 and vbp_node2.
The vbp_cluster is associated with an existing vbp_coherence_cluster.
Step 1: for the vbp_coherence_cluster define two Well Knows Addresses via the WebLogic Administration Console: navigate to the vbp_coherence_cluster, under the Configuration tab select the Well Known Addresses sub tab. Use the New button to create two Well Known Addresses with the following characteristics:
Name |
Listen Address |
Listen Port |
---|---|---|
wka1 |
Name of the host machine that runs the managed server |
A unique listen port, e.g. 27111 |
wka2 |
Name of the host machine that runs the managed server |
A unique listen port, e.g. 27112 |
table class = pdf-full-page-width
Step 2: for each Managed Server navigate to the Settings page, under the Configuration tab select the Coherence sub tab. Given that vbp_cluster is already associated with the vbp_coherence_cluster, the Coherence sub tab should already list the vbp_coherence_cluster. Change the settings as follows:
Settings for ... |
Unicast Listen Address |
Unicast Listen Port |
---|---|---|
vbp_node1 |
Name of the host machine that runs the managed server |
wka1 port, i.e. 27111 (as used in the example) |
vbp_node2 |
Name of the host machine that runs the managed server |
wka2 port, i.e. 27111 (as used in the example) |
table class = pdf-full-page-width
Make sure to activate the changes that were made.
For more information please check the Fusion Middleware documentation on Administering Clusters for Oracle WebLogic Server .
Specific settings for running Coherence in a Production environment
By default, Oracle Coherence runs in Development mode. The production checklist in the Coherence documentation states that it is recommended to use the development mode for all pre-production activities, such as development and testing. This is an important safety feature, because Coherence automatically prevents these nodes from joining a production cluster. The production mode must be explicitly specified when using Coherence in a production environment.
In the Production environment (and only in the Production environment), the system property tangosol.coherence.mode should be set to value prod in the script that is used to start Coherence nodes.
-Dtangosol.coherence.mode=prod
2.4.2.4 Set Environment Variables for Oracle Health Insurance Value-Based Payments
Environment variables for Oracle Health Insurance Value-Based Payments can be set in startWebLogic.sh script. An alternative approach (offered as a best practice) is to create a separate shell script named setVbpEnv.sh in a directory (referred to hereafter as <SET_ENV_VAR_DIR>). Rationale:
- The startWebLogic.sh file is generated by WLS and large (clutters the view).
- The startWebLogic.sh file can be changed by WebLogic if the cluster configuration changes. A separate setVbpEnv.sh file shields from these changes.
Make sure that <SET_ENV_VAR_DIR> is a shared directory for all the managed servers in the cluster. The following is a sample setVbpEnv.sh script:
# Memory Args USER_MEM_ARGS="-Xms4096m -Xmx4096m -XX:PermSize=768m -XX:MaxPermSize=768m -XX:NewSize=1280m -XX:MaxNewSize=1280m" USER_MEM_ARGS="$USER_MEM_ARGS -XX:ReservedCodeCacheSize=128m" USER_MEM_ARGS="$USER_MEM_ARGS -XX:+UseConcMarkSweepGC" USER_MEM_ARGS="$USER_MEM_ARGS -XX:+UseParNewGC" USER_MEM_ARGS="$USER_MEM_ARGS -XX:+ExplicitGCInvokesConcurrent" USER_MEM_ARGS="$USER_MEM_ARGS -XX:+CMSClassUnloadingEnabled" USER_MEM_ARGS="$USER_MEM_ARGS -XX:+UseCMSCompactAtFullCollection" export USER_MEM_ARGS # Java Options JAVA_OPTIONS="${JAVA_OPTIONS} -Dohi.mds.country=US" JAVA_OPTIONS="${JAVA_OPTIONS} -Dohi.properties.file=/config/ohi-vbp.properties" JAVA_OPTIONS="${JAVA_OPTIONS} -Djava.security.auth.login.config=/config/ohi-security.config" JAVA_OPTIONS="${JAVA_OPTIONS} -Dtangosol.coherence.mode=prod" JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.org.apache.xml.internal.dtm.DTMManager=com.sun.org.apache.xml.internal.dtm.ref.DTMManagerDefault" JAVA_OPTIONS="${JAVA_OPTIONS} -Djavax.xml.datatype.DatatypeFactory=com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl" export JAVA_OPTIONS # Optional settings for JMX management JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.authenticate=false" JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.ssl=false" JAVA_OPTIONS="${JAVA_OPTIONS} -Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder" export JAVA_OPTIONS # Optional settings to enable monitoring Coherence through JMX JAVA_OPTIONS="${JAVA_OPTIONS} -Dtangosol.coherence.management=all" JAVA_OPTIONS="${JAVA_OPTIONS} -Dtangosol.coherence.management.remote=true" export JAVA_OPTIONS # Settings specific to Managed Servers -- repeated for each Managed Server 1 to N if [ "$1" = "managed_server1" ] ; then JAVA_OPTIONS="${JAVA_OPTIONS} -Dtangosol.coherence.member=<coherence_member_name>" JAVA_OPTIONS="${JAVA_OPTIONS} -Dlogback.configurationFile=<config directory>/logback_node_1.xml" # Optional JMX Setting JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.port=<unique_port>" export JAVA_OPTIONS fi if [ "$1" = "managed_server2" ] ; then JAVA_OPTIONS="${JAVA_OPTIONS} -Dtangosol.coherence.member=<coherence_member_name>" JAVA_OPTIONS="${JAVA_OPTIONS} -Dlogback.configurationFile=<config directory>/logback_node_2.xml" # Optional JMX Setting JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.port=<unique_port>" export JAVA_OPTIONS fi if [ "$1" = "managed_serverN" ] ; then JAVA_OPTIONS="${JAVA_OPTIONS} -Dtangosol.coherence.member=<coherence_member_name>" JAVA_OPTIONS="${JAVA_OPTIONS} -Dlogback.configurationFile=<config directory>/logback_node_N.xml" # Optional JMX Setting JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.port=<unique_port>" export JAVA_OPTIONS fi
Go to <MIDDLEWARE_HOME_DIRECTORY>/user_projects/domains/<DOMAIN_NAME>/bin where <DOMAIN_NAME> is the name of the domain that was given in Step 6 of the previous section. Edit the file startWebLogic.sh in that directory and add the following line (highlighted below) at the beginning as shown in this sample:
# Call setDomainEnv here. DOMAIN_HOME="/home/domains/ohi_domain" . ${DOMAIN_HOME}/bin/setDomainEnv.sh $* if [ "${SERVER_NAME}" = "<ohi admin server name>" ] ; then MEM_ARGS="-Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m" export MEM_ARGS else . <SET_ENV_VAR_DIR>/setVbpEnv.sh ${SERVER_NAME} fi SAVE_JAVA_OPTIONS="${JAVA_OPTIONS}"
USER_MEM_ARGS Explanation:
- -Xms<SOME_SIZE>m -Xmx<SOME_SIZE>m -- this represents the heap size allocated for the JVM. SOME_SIZE should always be the same number.
- Determining what these sizes should be in production environments requires a full JVM sizing exercise. More on JVM sizing for production is available elsewhere in this guide.
- -XX:PermSize=<SMALLER_SIZE>m -XX:MaxPermSize=<SMALLER_SIZE>m -- this sets the size for the permanent generation of the JVM's heap.
- -XX:NewSize=<SOME_SIZE>m -XX:MaxNewSize=<SOME_SIZE>m -- sets the size for the JVM's new generation. As a rule of thumb, set it to 30% of the heap size. SOME_SIZE should always be the same number.
- -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+ExplicitGCInvokesConcurrent -XX:+CMSClassUnloadingEnabled -XX:+UseCMSCompactAtFullCollection -- these are the garbage collector settings recommended for use with the Oracle Health Insurance Value-Based Payments application. More information on JVM options and garbage collector settings at Java HotSpot VM Options.
JAVA_OPTIONS Explanation:
- tangosol.coherence.mode: use this property for production environments only.
- tangosol.coherence.member: the member-name element contains the name of the member itself. This name makes it possible to easily differentiate among members, such as when multiple members run on the same machine. If a name is not specified, the node will fail to start (IllegalArgumentException). Suggested naming convention: OHI-<systemproperty.ohi.environment.identifier>-<machinename_or_ip-address>-<unique-identifier>. Note that the value of this system property should not exceed 32 characters.
2.4.2.5 Limited support for the X window system
For displaying gauges in UI pages on systems that do not have the X windows system or have limited access to it add the following JAVA_OPTIONS option:
JAVA_OPTIONS="$JAVA_OPTIONS -Djava.awt.headless=true"
See the Java documentation for more information. Typically, on a system that lacks X windows support and that does not have this option specified, gauges will not display correctly and the following exception will be in the logs (formatted for displaying it in this guide):
<Aug 31, 2011 12:39:00 PM CEST> <Error> <oracle.adfinternal.view.faces.config.rich.RegistrationConfigurator> <BEA-000000> <ADF_FACES-60096:Server Exception during PPR, #1 javax.servlet.ServletException: java.lang.InternalError: Can't connect to X11 window server using ':0' as the value of the DISPLAY variable.