Question
Understanding JBoss EAP 6.x Settings
Hi All,
We are currently installing PRPC 7.1.9 on JBoss EAP 6.4.4 with an Oracle 11g database. I had questions on some of the settings and installation steps outlined in the PRPC Installation guide, as we would like to know WHY Pega has identified various settings.
1: Why is use-ccm set to false on the datasource configuration:
Example from install guide: <datasource jta="false" jndi-name="java:/jdbc/PegaRULES" poolname="PegaRULES" enabled="true" use-ccm="false">
CCM is set to TRUE by default. It is my understanding that this feature can prevent leaked datasource connections. Why would we want to disable this feature?
2: Prepared statement sharing: Pega Performance engineering has recommended the use of prepared statements. Why is share-prepared-statements set to false in the instructions?
Example from datasource configuration:
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
For improved performance, Pega Performance Engineering has reccomended using a prepared statement cache. We implement with the following configuration:
<statement>
<prepared-statement-cache-size>100</prepared-statement-cache-size>
<share-prepared-statements>true</share-prepared-statements>
</statement>
Will sharing prepared statements cause any problems with PRPC? If not, why is this indicated in the install guide.
3: Is datasource driver class necessary?
We installed the Oracle JDBC driver using the default driver installation tools as a part of the JBOSS installation. This configured the datasources with just a <driver>oracle</driver> entry, and did not include a <driver-class> entry. Is there any reason to include the driver-class entry?
4: Differences with Standard oracle driver installation vs. Pega instructed driver installation:
When installing the oracle driver using the jboss default driver installation methods, we noticed the following differences between the defaults and instructions in the pega install documentation:
- Driver module path: Default installation path is: $JBOSS_HOME/modules/oracle/jdbc/main, Pega instructed path is: $JBOSS_HOME/modules/system/layers/base/com/oracle/main. Is there a specific reason for using this path?
- Differences in module.xml file: Pega documentation instructs to add the following properties in the module.xml file: <property name="jboss.api" value="unsupported"/>, <module name="javax.servlet.api" optional="true"/> What do these changes support? If we do not include these properties will there be any impact on the application?
- Driver Configuration: The default driver installation produces the following configuration:
<driver name="oracle" module="oracle.jdbc">
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
</driver>
This differs from the pega instructed driver configuration of:
<driver name="oracle" module="com.oracle">
<driver-class>oracle.jdbc.OracleDriver</driver-class>
5:
In step 6 of the Setting Red Hat JBoss application deployment parameters section, the JNDI value listed does NOT match the JNDI values specified in the datasource section earlier in the document. My working config looks like this:
<simple name="java:/prconfig/database/databases/PegaRULES/dataSourceAdmin" value="java:/jdbc/AdminPegaRULES"/>
<simple name="java:/prconfig/database/databases/PegaDATA/dataSourceAdmin" value="java:/jdbc/AdminPegaRULES"/>
<simple name="java:/prconfig/database/databases/PegaRULESdbAdmin" value="java:/jdbc/AdminPegaRULES"/>
Note the value is different from the listed: java:comp/env/jdbc/AdminPegaRULES that is in the installation document. This section should be updated to the correct value of: java:/jdbc/AdminPegaRULES
Please note, my current working configuration is using the default driver installation methods provided by the jboss installer, and not the methods identified in the install document. I have not seen any issues so far because of this, however I would like to vet this configuration before moving it to upper environments.
For Reference, here is the installation guide I am following: https://pdn.pega.com/documents/pega-719-platform-installation-guide-oracle-jboss-red-hat-eap
Looking forward to input on this.
Thank you,
-Jon
Hi Jonathan,
Lots of good questions!!! Let me try to answer them one by one:
1. We should not. I checked the history of this in Redhat's web site, there was a bug in JBoss when you create datasource from admin console you get use-ccm set to false in standalone.xml. It has since been fixed in JBoss EAP 6.4. That was probably why the guide uses that setting. use-ccm essentially uses JBoss CachedConnectionManager.
2. No reason to disable the statement cache. However, we do expect customers to tune as necessary based on their own needs. For production environment, using the cache is probably a better option as suggested by our performance team.
3. If you only have one driver class, it should not be needed, but it does not hurt to specify either. However, if you have more than one, you may need to specify that for the second one.
4. One is for xa driver, and pega's example for non-xa driver. Both should be supported pending your own need.
5. this is a doc bug, will be addressed in the next release. You are absolutely right on!
Any more questions, please reply.