Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CLOUD-2297] - Support Quartz configuration with Oracle and another D… #51

Merged
merged 1 commit into from Oct 22, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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'