Skip to content

Commit

Permalink
[CLOUD-2297] - Support Quartz configuration with Oracle and another D…
Browse files Browse the repository at this point in the history
…atabases (#51)

Fix ctf tests.

Signed-off-by: Filippe Spolti <fspolti@redhat.com>
  • Loading branch information
spolti committed Oct 22, 2018
1 parent 7d677c7 commit ced0b9e
Show file tree
Hide file tree
Showing 10 changed files with 419 additions and 93 deletions.
3 changes: 3 additions & 0 deletions os.kieserver.launch/added/kieserver-config.sh
Expand Up @@ -391,6 +391,9 @@ function setKieServerEnv() {
KIE_SERVER_OPTS="${KIE_SERVER_OPTS} -Dorg.kie.server.persistence.ds=${KIE_SERVER_PERSISTENCE_DS}"
KIE_SERVER_OPTS="${KIE_SERVER_OPTS} -Dorg.kie.server.persistence.tm=${KIE_SERVER_PERSISTENCE_TM}"
fi
if [ "x${KIE_SERVER_PERSISTENCE_SCHEMA}" != "x" ]; then
KIE_SERVER_OPTS="${KIE_SERVER_OPTS} -Dorg.kie.server.persistence.schema=${KIE_SERVER_PERSISTENCE_SCHEMA}"
fi
KIE_SERVER_OPTS="${KIE_SERVER_OPTS} -Dorg.kie.server.repo=${KIE_SERVER_REPO}"
KIE_SERVER_OPTS="${KIE_SERVER_OPTS} -Dorg.optaplanner.server.ext.disabled=${KIE_SERVER_BRP_DISABLED}"
if [ "x${KIE_SERVER_MGMT_DISABLED}" != "x" ]; then
Expand Down
81 changes: 70 additions & 11 deletions os.kieserver.launch/added/kieserver-setup.sh
Expand Up @@ -31,25 +31,81 @@ function filterKieJmsFile() {
}

function filterQuartzPropFile() {

local QUARTZ_DELEGATE_CLASS="org.quartz.impl.jdbcjobstore.StdJDBCDelegate"
local DEFAULT_JNDI
local DB_TYPE

quartzPropFile="${1}"
if [ -e ${quartzPropFile} ] ; then
if [[ "${KIE_SERVER_PERSISTENCE_DIALECT}" == "org.hibernate.dialect.MySQL"* ]]; then
sed -i "s,org.quartz.jobStore.driverDelegateClass=,org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate," ${quartzPropFile}
quartzDriverDelegateSet="true"
elif [[ "${KIE_SERVER_PERSISTENCE_DIALECT}" == "org.hibernate.dialect.PostgreSQL"* ]]; then
sed -i "s,org.quartz.jobStore.driverDelegateClass=,org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate," ${quartzPropFile}
quartzDriverDelegateSet="true"


# get the first db configuration using legacy datasource configuration:
if [ "x${DB_SERVICE_PREFIX_MAPPING}" != "x" ]; then
local serviceMappingName=${DB_SERVICE_PREFIX_MAPPING%%,*}
local prefix=${serviceMappingName#*=}
DEFAULT_JNDI=$(find_env "${prefix}_JNDI")
fi
if [ "x${DB_JNDI}" != "x" ]; then
sed -i "s,org.quartz.dataSource.managedDS.jndiURL=,org.quartz.dataSource.managedDS.jndiURL=${DB_JNDI}," ${quartzPropFile}
# get the first db configuration using DATASOURCES env:
if [ "x${DATASOURCES}" != "x" ]; then
local prefix="${DATASOURCES%%,*}"
DEFAULT_JNDI=$(find_env "${prefix}_JNDI")
fi

if [ "x${DEFAULT_JNDI}" != "x" ]; then
quartzManagedJndiSet="true"
fi
if [ "x${QUARTZ_JNDI}" != "x" ]; then
sed -i "s,org.quartz.dataSource.notManagedDS.jndiURL=,org.quartz.dataSource.notManagedDS.jndiURL=${QUARTZ_JNDI}," ${quartzPropFile}
quartzNotManagedJndiSet="true"
fi

if [[ "${KIE_SERVER_PERSISTENCE_DIALECT}" == "org.hibernate.dialect.MySQL"* ]]; then
quartzDriverDelegateSet="true"
DB_TYPE="MYSQL"
elif [[ "${KIE_SERVER_PERSISTENCE_DIALECT}" == "org.hibernate.dialect.PostgreSQL"* ]]; then
QUARTZ_DELEGATE_CLASS="org.quartz.impl.jdbcjobstore.PostgreSQLDelegate"
quartzDriverDelegateSet="true"
DB_TYPE="POSTGRESQL"
elif [[ "${KIE_SERVER_PERSISTENCE_DIALECT}" == *"Oracle"* ]]; then
log_warning "For Oracle 10G use the org.jbpm.persistence.jpa.hibernate.DisabledFollowOnLockOracle10gDialect hibernate dialect to avoid frequent Hibernate warning HHH000444 message in the logs."
QUARTZ_DELEGATE_CLASS="org.quartz.impl.jdbcjobstore.oracle.OracleDelegate"
# Oracle classes needs to be accessible by the quartz, in this case oracle driver or module needs to be added on jboss-deployment-structure.xml file
if [ "x${QUARTZ_DRIVER_MODULE}" != "x" ]; then
sed -i "s|<\!--EXTRA_DEPENDENCY-->|<module name=\"${QUARTZ_DRIVER_MODULE}\"/>\n <\!--EXTRA_DEPENDENCY-->|" $JBOSS_HOME/standalone/deployments/kie-server.war/WEB-INF/jboss-deployment-structure.xml
else
log_warning "QUARTZ_DRIVER_MODULE env not set. Quartz might not work properly."
fi
quartzDriverDelegateSet="true"
DB_TYPE="ORACLE"
elif [[ "${KIE_SERVER_PERSISTENCE_DIALECT}" == "org.hibernate.dialect.SQLServer"* ]]; then
QUARTZ_DELEGATE_CLASS="org.quartz.impl.jdbcjobstore.MSSQLDelegate"
quartzDriverDelegateSet="true"
DB_TYPE="SQLSERVER"

if [ "x${QUARTZ_DATABASE}" != "x" ]; then
local databaseName="${QUARTZ_DATABASE}"
fi

if [ "x${QUARTZ_XA_CONNECTION_PROPERTY_URL}" != "x" ]; then
local databaseName="${QUARTZ_XA_CONNECTION_PROPERTY_URL#*=}"
fi

if [ "x${QUARTZ_URL}" != "x" ]; then
local databaseName="${QUARTZ_URL#*=}"
fi

sed -i "s|USE \[enter_db_name_here\]|USE ${databaseName}|" $JBOSS_HOME/bin/quartz_tables_sqlserver.sql

elif [[ "${KIE_SERVER_PERSISTENCE_DIALECT}" == "org.hibernate.dialect.DB2"* ]]; then
quartzDriverDelegateSet="true"
DB_TYPE="DB2"
fi

if [ "${quartzDriverDelegateSet}" = "true" ] && [ "${quartzManagedJndiSet=}" = "true" ] && [ "${quartzNotManagedJndiSet=}" = "true" ]; then
KIE_SERVER_OPTS="${KIE_SERVER_OPTS} -Dorg.quartz.properties=${quartzPropFile}"
sed -i "s,org.quartz.jobStore.driverDelegateClass=,org.quartz.jobStore.driverDelegateClass=${QUARTZ_DELEGATE_CLASS}," ${quartzPropFile}
sed -i "s,org.quartz.dataSource.managedDS.jndiURL=,org.quartz.dataSource.managedDS.jndiURL=${DEFAULT_JNDI}," ${quartzPropFile}
sed -i "s,org.quartz.dataSource.notManagedDS.jndiURL=,org.quartz.dataSource.notManagedDS.jndiURL=${QUARTZ_JNDI}," ${quartzPropFile}
KIE_SERVER_OPTS="${KIE_SERVER_OPTS} -Dorg.quartz.properties=${quartzPropFile} -Dorg.openshift.kieserver.common.sql.dbtype=${DB_TYPE}"
fi
fi
}
Expand All @@ -71,7 +127,10 @@ setupKieServerForOpenShift() {
# filter the KIE Server kie-server-jms.xml and ejb-jar.xml files
filterKieJmsFile "${JBOSS_HOME}/standalone/deployments/kie-server.war/META-INF/kie-server-jms.xml"
filterKieJmsFile "${JBOSS_HOME}/standalone/deployments/kie-server.war/WEB-INF/ejb-jar.xml"


# setup the drivers, if exists
configure_drivers

# filter the KIE Server quartz.properties file
filterQuartzPropFile "${JBOSS_HOME}/bin/quartz.properties"

Expand Down
26 changes: 14 additions & 12 deletions os.kieserver.launch/added/quartz.properties
@@ -1,39 +1,41 @@
# Configure Main Scheduler Properties
#============================================================================

org.quartz.scheduler.instanceName = jBPMClusteredScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.scheduler.instanceName=jBPMClusteredScheduler
org.quartz.scheduler.instanceId=AUTO

#============================================================================
# Configure ThreadPool
#============================================================================

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=5
org.quartz.threadPool.threadPriority=5

#============================================================================
# Configure JobStore
#============================================================================

org.quartz.jobStore.misfireThreshold = 60000

org.quartz.jobStore.misfireThreshold=60000
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreCMT
#The filed below will be configured by the kieserver-config.sh
#for mysql: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
#for postgresql: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
# The property below will be configured by the kieserver-setup.sh
# for mysql: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
# for postgresql: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
# for oracle: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
# for sqlserver: org.quartz.impl.jdbcjobstore.MSSQLDelegate
# for db2: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.driverDelegateClass=
org.quartz.jobStore.useProperties=false
org.quartz.jobStore.dataSource=managedDS
org.quartz.jobStore.nonManagedTXDataSource=notManagedDS
org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.isClustered=true
org.quartz.jobStore.clusterCheckinInterval = 20000
org.quartz.jobStore.clusterCheckinInterval=20000

#============================================================================
# Configure Datasources
#============================================================================
#Needs to be added kieserver-config.sh script as we don't know the JNDIs
#Needs to be added by kieserver-setup.sh script as we don't know the JNDIs

org.quartz.dataSource.managedDS.jndiURL=
org.quartz.dataSource.notManagedDS.jndiURL=
6 changes: 6 additions & 0 deletions os.kieserver.launch/configure.sh
Expand Up @@ -18,8 +18,14 @@ if [ -e ${SOURCES_DIR}/jboss-bpmsuite-*-supplementary-tools.zip ]; then
# Get the DDL files and copy to $JBOSS_HOME/bin/
unzip -qj ${SOURCES_DIR}/jboss-bpmsuite-*-supplementary-tools.zip jboss-brms-bpmsuite-*-supplementary-tools/ddl-scripts/mysql5/quartz_tables_mysql.sql -d ${SCRIPT_DIR}
unzip -qj ${SOURCES_DIR}/jboss-bpmsuite-*-supplementary-tools.zip jboss-brms-bpmsuite-*-supplementary-tools/ddl-scripts/postgresql/quartz_tables_postgres.sql -d ${SCRIPT_DIR}
unzip -qj ${SOURCES_DIR}/jboss-bpmsuite-*-supplementary-tools.zip jboss-brms-bpmsuite-*-supplementary-tools/ddl-scripts/oracle/quartz_tables_oracle.sql -d ${SCRIPT_DIR}
unzip -qj ${SOURCES_DIR}/jboss-bpmsuite-*-supplementary-tools.zip jboss-brms-bpmsuite-*-supplementary-tools/ddl-scripts/sqlserver/quartz_tables_sqlserver.sql -d ${SCRIPT_DIR}
unzip -qj ${SOURCES_DIR}/jboss-bpmsuite-*-supplementary-tools.zip jboss-brms-bpmsuite-*-supplementary-tools/ddl-scripts/db2/quartz_tables_db2.sql -d ${SCRIPT_DIR}
cp -p ${SCRIPT_DIR}/quartz_tables_mysql.sql ${JBOSS_HOME}/bin/
cp -p ${SCRIPT_DIR}/quartz_tables_postgres.sql ${JBOSS_HOME}/bin/
cp -p ${SCRIPT_DIR}/quartz_tables_oracle.sql ${JBOSS_HOME}/bin/
cp -p ${SCRIPT_DIR}/quartz_tables_sqlserver.sql ${JBOSS_HOME}/bin/
cp -p ${SCRIPT_DIR}/quartz_tables_db2.sql ${JBOSS_HOME}/bin/
fi

# Enforces eap70 password policy for the add-user script.
Expand Down
Expand Up @@ -28,6 +28,7 @@
<module name="org.apache.xerces"/>
<module name="org.osgi.core"/>
<module name="org.osgi.enterprise"/>
<!--EXTRA_DEPENDENCY-->
</dependencies>
</deployment>
</jboss-deployment-structure>
Expand Up @@ -26,6 +26,7 @@
the WAR depends on private modules. -->
<!-- Keep the alphabetical order! -->
<module name="org.apache.xerces"/>
<!--EXTRA_DEPENDENCY-->
</dependencies>
</deployment>
</jboss-deployment-structure>
2 changes: 2 additions & 0 deletions os.kieserver.webapp/configure.sh
Expand Up @@ -44,9 +44,11 @@ fi
cp -f -p ${SOURCES_DIR}/openshift-kieserver-common-${OPENSHIFT_KIESERVER_VERSION}.jar ${KIE_SERVER_WEBINF_DIR}/lib/openshift-kieserver-common-${OPENSHIFT_KIESERVER_VERSION}.jar
cp -f -p ${SOURCES_DIR}/openshift-kieserver-jms-${OPENSHIFT_KIESERVER_VERSION}.jar ${KIE_SERVER_WEBINF_DIR}/lib/openshift-kieserver-jms-${OPENSHIFT_KIESERVER_VERSION}.jar
cp -f -p ${SOURCES_DIR}/openshift-kieserver-web-${OPENSHIFT_KIESERVER_VERSION}.jar ${KIE_SERVER_WEBINF_DIR}/lib/openshift-kieserver-web-${OPENSHIFT_KIESERVER_VERSION}.jar
cp -f -p ${SOURCES_DIR}/quartz-oracle-1.8.5.jar ${KIE_SERVER_WEBINF_DIR}/lib/
chmod 664 "${KIE_SERVER_WEBINF_DIR}/lib/openshift-kieserver-common-${OPENSHIFT_KIESERVER_VERSION}.jar"
chmod 664 "${KIE_SERVER_WEBINF_DIR}/lib/openshift-kieserver-jms-${OPENSHIFT_KIESERVER_VERSION}.jar"
chmod 664 "${KIE_SERVER_WEBINF_DIR}/lib/openshift-kieserver-web-${OPENSHIFT_KIESERVER_VERSION}.jar"
chmod 664 "${KIE_SERVER_WEBINF_DIR}/lib/quartz-oracle-1.8.5.jar"

cp -f -p ${ADDED_WEBINF_DIR}/ejb-jar.xml ${KIE_SERVER_WEBINF_DIR}/ejb-jar.xml
cp -f -p ${ADDED_WEBINF_DIR}/security-filter-rules.properties ${KIE_SERVER_WEBINF_DIR}/security-filter-rules.properties
Expand Down
1 change: 0 additions & 1 deletion os.kieserver.webapp/module.yaml
Expand Up @@ -4,4 +4,3 @@ version: '1.0'
description: Legacy os.kieserver.webapp script package.
execute:
- script: configure.sh
user: '185'

0 comments on commit ced0b9e

Please sign in to comment.