Skip to content

Commit

Permalink
Add Support for Tomcat App Server 10.0 for PLF 6.6+ (#214) (#218)
Browse files Browse the repository at this point in the history
  • Loading branch information
hbenali authored Feb 26, 2024
1 parent 3c60ef1 commit 1c5763e
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 13 deletions.
8 changes: 6 additions & 2 deletions _functions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -611,8 +611,10 @@ initialize_product_settings() {
env_var DEPLOYMENT_FORCE_JDBC_DRIVER_ADDON "false"
if [[ "${PRODUCT_VERSION}" =~ ^(1.0|1.1|1.2) ]]; then
env_var DEPLOYMENT_APPSRV_VERSION "8.5"
elif [[ "${PRODUCT_VERSION}" =~ ^(1.3|1.4|1.5|1.6) ]]; then
elif [[ "${PRODUCT_VERSION}" =~ ^(1.3|1.4|1.5) ]]; then
env_var "DEPLOYMENT_APPSRV_VERSION" "9.0"
elif [[ "${PRODUCT_VERSION}" =~ ^(1.6) ]]; then
env_var "DEPLOYMENT_APPSRV_VERSION" "10.0"
else
echo_error "Product version \"${PRODUCT_VERSION}\" not yet managed (Tomcat version)"
exit 1
Expand Down Expand Up @@ -1100,8 +1102,10 @@ initialize_product_settings() {
if [[ "${PRODUCT_NAME}" =~ ^(plfcom|plfent|plfentrial|plfsales)$ ]]; then
if [[ "${PRODUCT_VERSION}" =~ ^(5.0|5.1|5.2|5.3|6.0|6.1|6.2) ]]; then
env_var "DEPLOYMENT_APPSRV_VERSION" "8.5"
elif [[ "${PRODUCT_VERSION}" =~ ^(6.3|6.4|6.5|6.6) ]]; then
elif [[ "${PRODUCT_VERSION}" =~ ^(6.3|6.4|6.5) ]]; then
env_var "DEPLOYMENT_APPSRV_VERSION" "9.0"
elif [[ "${PRODUCT_VERSION}" =~ ^(6.6) ]]; then
env_var "DEPLOYMENT_APPSRV_VERSION" "10.0"
else
echo_error "Product version \"${PRODUCT_VERSION}\" not yet managed (Tomcat version)"
exit 1
Expand Down
25 changes: 14 additions & 11 deletions _functions_tomcat.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,10 @@ do_create_jmx_credentials_files() {
}

do_configure_tomcat_jmx() {
local DEPLOYMENT_APPSRV_MAJOR_VERSION=$(echo ${DEPLOYMENT_APPSRV_VERSION} | cut -d '.' -f1)
if [ ! -f ${DEPLOYMENT_DIR}/lib/catalina-jmx-remote*.jar -a ! -f ${DEPLOYMENT_DIR}/lib/tomcat-catalina-jmx-remote*.jar ]; then
# Install jmx jar
JMX_JAR_URL="http://archive.apache.org/dist/tomcat/tomcat-${DEPLOYMENT_APPSRV_VERSION:0:1}/v${DEPLOYMENT_APPSRV_VERSION}/bin/extras/catalina-jmx-remote.jar"
JMX_JAR_URL="http://archive.apache.org/dist/tomcat/tomcat-${DEPLOYMENT_APPSRV_MAJOR_VERSION}/v${DEPLOYMENT_APPSRV_VERSION}/bin/extras/catalina-jmx-remote.jar"
if [ ! -e ${DL_DIR}/${DEPLOYMENT_APPSRV_TYPE}/${DEPLOYMENT_APPSRV_VERSION}/`basename ${JMX_JAR_URL}` ]; then
if ${ADT_OFFLINE}; then
echo_error "ADT is offine and the JMX remote lib isn't available locally"
Expand Down Expand Up @@ -80,7 +81,7 @@ do_configure_tomcat_jmx() {
fi
do_create_jmx_credentials_files
# Patch to reconfigure server.xml for JMX
find_instance_file JMX_SERVER_PATCH "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_VERSION:0:1}" "server-jmx.xml.patch" "${JMX_SERVER_PATCH_PRODUCT_NAME}"
find_instance_file JMX_SERVER_PATCH "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_MAJOR_VERSION}" "server-jmx.xml.patch" "${JMX_SERVER_PATCH_PRODUCT_NAME}"

# Reconfigure server.xml for JMX
if [ "${JMX_SERVER_PATCH}" != "UNSET" ]; then
Expand Down Expand Up @@ -165,11 +166,11 @@ do_configure_tomcat_ldap() {
}

do_configure_tomcat_datasources() {

local DEPLOYMENT_APPSRV_MAJOR_VERSION=$(echo ${DEPLOYMENT_APPSRV_VERSION} | cut -d '.' -f1)
case ${DEPLOYMENT_DB_TYPE} in
MYSQL|DOCKER_MYSQL|DOCKER_MARIADB)
# Patch to reconfigure server.xml for database
find_instance_file DB_SERVER_PATCH "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_VERSION:0:1}" "server-mysql.xml.patch" "${DB_SERVER_PATCH_PRODUCT_NAME}"
find_instance_file DB_SERVER_PATCH "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_MAJOR_VERSION}" "server-mysql.xml.patch" "${DB_SERVER_PATCH_PRODUCT_NAME}"

# Deploy the Mysql driver
if ${DEPLOYMENT_FORCE_JDBC_DRIVER_ADDON}; then
Expand Down Expand Up @@ -198,7 +199,7 @@ do_configure_tomcat_datasources() {
;;
DOCKER_POSTGRES)
# Patch to reconfigure server.xml for database
find_instance_file DB_SERVER_PATCH "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_VERSION:0:1}" "server-postgres.xml.patch" "${DB_SERVER_PATCH_PRODUCT_NAME}"
find_instance_file DB_SERVER_PATCH "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_MAJOR_VERSION}" "server-postgres.xml.patch" "${DB_SERVER_PATCH_PRODUCT_NAME}"

if ${DEPLOYMENT_FORCE_JDBC_DRIVER_ADDON}; then
local addon="exo-jdbc-driver-postgresql:${DEPLOYMENT_POSTGRESQL_ADDON_VERSION}"
Expand All @@ -213,7 +214,7 @@ do_configure_tomcat_datasources() {
;;
DOCKER_ORACLE)
# Patch to reconfigure server.xml for database
find_instance_file DB_SERVER_PATCH "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_VERSION:0:1}" "server-oracle.xml.patch" "${DB_SERVER_PATCH_PRODUCT_NAME}"
find_instance_file DB_SERVER_PATCH "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_MAJOR_VERSION}" "server-oracle.xml.patch" "${DB_SERVER_PATCH_PRODUCT_NAME}"

if ${DEPLOYMENT_FORCE_JDBC_DRIVER_ADDON}; then
local addon="exo-jdbc-driver-oracle:${DEPLOYMENT_ORACLE_ADDON_VERSION}"
Expand All @@ -225,7 +226,7 @@ do_configure_tomcat_datasources() {
;;
DOCKER_SQLSERVER)
# Patch to reconfigure server.xml for database
find_instance_file DB_SERVER_PATCH "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_VERSION:0:1}" "server-sqlserver.xml.patch" "${DB_SERVER_PATCH_PRODUCT_NAME}"
find_instance_file DB_SERVER_PATCH "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_MAJOR_VERSION}" "server-sqlserver.xml.patch" "${DB_SERVER_PATCH_PRODUCT_NAME}"

if ${DEPLOYMENT_FORCE_JDBC_DRIVER_ADDON}; then
local addon="exo-jdbc-driver-sqlserver:${DEPLOYMENT_SQLSERVER_ADDON_VERSION}"
Expand All @@ -237,7 +238,7 @@ do_configure_tomcat_datasources() {
;;
HSQLDB)
# Patch to reconfigure server.xml for database
find_instance_file DB_SERVER_PATCH "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_VERSION:0:1}" "server-hsqldb.xml.patch" "${DB_SERVER_PATCH_PRODUCT_NAME}"
find_instance_file DB_SERVER_PATCH "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_MAJOR_VERSION}" "server-hsqldb.xml.patch" "${DB_SERVER_PATCH_PRODUCT_NAME}"
;;
*)
echo_error "Invalid database type \"${DEPLOYMENT_DB_TYPE}\""
Expand Down Expand Up @@ -296,8 +297,9 @@ do_patch_tomcat_datasources() {
# Function that configure the tomcat server ports
#
do_configure_tomcat_ports() {
local DEPLOYMENT_APPSRV_MAJOR_VERSION=$(echo ${DEPLOYMENT_APPSRV_VERSION} | cut -d '.' -f1)
# Patch to reconfigure server.xml to change ports
find_instance_file PORTS_SERVER_PATCH "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_VERSION:0:1}" "server-ports.xml.patch" "${PORTS_SERVER_PATCH_PRODUCT_NAME}"
find_instance_file PORTS_SERVER_PATCH "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_MAJOR_VERSION}" "server-ports.xml.patch" "${PORTS_SERVER_PATCH_PRODUCT_NAME}"

# Tomcat Specific ports
env_var "DEPLOYMENT_SHUTDOWN_PORT" "${DEPLOYMENT_PORT_PREFIX}00"
Expand All @@ -319,8 +321,9 @@ do_configure_tomcat_ports() {
}

do_configure_tomcat_setenv() {
local DEPLOYMENT_APPSRV_MAJOR_VERSION=$(echo ${DEPLOYMENT_APPSRV_VERSION} | cut -d '.' -f1)
# setenv.xml
find_instance_file TOMCAT_SETENV_SCRIPT "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_VERSION:0:1}" "setenv.sh" "${TOMCAT_SETENV_SCRIPT_PRODUCT_NAME}"
find_instance_file TOMCAT_SETENV_SCRIPT "${ETC_DIR}/${DEPLOYMENT_APPSRV_TYPE}${DEPLOYMENT_APPSRV_MAJOR_VERSION}" "setenv.sh" "${TOMCAT_SETENV_SCRIPT_PRODUCT_NAME}"

# Use a specific setenv.sh
if [ "${TOMCAT_SETENV_SCRIPT}" != "UNSET" ]; then
Expand Down Expand Up @@ -387,7 +390,7 @@ do_configure_tomcat_server() {

# Reconfigure the server to use JMX
# if DEPLOYMENT_APPSRV_VERSION = 9.0+ skip downloading catalina-jmx-remote.jar (Not supported anymore)
if [[ "${DEPLOYMENT_APPSRV_VERSION}" =~ ^(9.0) ]]; then
if [[ "${DEPLOYMENT_APPSRV_VERSION}" =~ ^(9.0|10.0) ]]; then
# Juste display the calculated JMX URL
do_create_jmx_credentials_files
else
Expand Down
40 changes: 40 additions & 0 deletions etc/tomcat10/server-mysql.xml.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
--- server.xml
+++ server.xml
@@ -59,31 +59,31 @@
<Resource name="exo-idm_portal" auth="Container" type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
initialSize="5" maxActive="20" minIdle="5" maxIdle="15" maxWait="10000"
- validationQuery="SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS" validationQueryTimeout="5"
+ validationQuery="SELECT 1" validationQueryTimeout="5"
testWhileIdle="true" testOnBorrow="true" testOnReturn="false"
timeBetweenEvictionRunsMillis="30000" minEvictableIdleTimeMillis="60000"
removeAbandonedOnBorrow="true" removeAbandonedOnMaintenance="true" removeAbandonedTimeout="300" logAbandoned="false"
- username="sa" password="" driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:file:${exo.data.dir}/hsql/exo-plf;shutdown=true;hsqldb.write_delay=false;hsqldb.tx=mvcc;" />
+ username="@DB_IDM_USR@" password="@DB_IDM_PWD@" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://@DB_IDM_HOST@:@DB_IDM_PORT@/@DB_IDM_NAME@?autoReconnect=true&amp;characterEncoding=utf8&amp;useSSL=false" />

<!-- eXo JCR Datasource for portal -->
<Resource name="exo-jcr_portal" auth="Container" type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
initialSize="5" maxActive="20" minIdle="5" maxIdle="15" maxWait="10000"
- validationQuery="SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS" validationQueryTimeout="5"
+ validationQuery="SELECT 1" validationQueryTimeout="5"
testWhileIdle="true" testOnBorrow="true" testOnReturn="false"
timeBetweenEvictionRunsMillis="30000" minEvictableIdleTimeMillis="60000"
removeAbandonedOnBorrow="true" removeAbandonedOnMaintenance="true" removeAbandonedTimeout="300" logAbandoned="false"
- username="sa" password="" driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:file:${exo.data.dir}/hsql/exo-plf;shutdown=true;hsqldb.write_delay=false;hsqldb.tx=mvcc;" />
+ username="@DB_JCR_USR@" password="@DB_JCR_PWD@" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://@DB_JCR_HOST@:@DB_JCR_PORT@/@DB_JCR_NAME@?autoReconnect=true&amp;useSSL=false" />

<!-- eXo JPA Datasource for portal -->
<Resource name="exo-jpa_portal" auth="Container" type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
initialSize="5" maxActive="20" minIdle="5" maxIdle="15" maxWait="10000"
- validationQuery="SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS" validationQueryTimeout="5"
+ validationQuery="SELECT 1" validationQueryTimeout="5"
testWhileIdle="true" testOnBorrow="true" testOnReturn="false"
timeBetweenEvictionRunsMillis="30000" minEvictableIdleTimeMillis="60000"
removeAbandonedOnBorrow="true" removeAbandonedOnMaintenance="true" removeAbandonedTimeout="300" logAbandoned="false"
- username="sa" password="" driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:file:${exo.data.dir}/hsql/exo-plf;shutdown=true;hsqldb.write_delay=false;hsqldb.tx=mvcc;" />
+ username="@DB_JPA_USR@" password="@DB_JPA_PWD@" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://@DB_JPA_HOST@:@DB_JPA_PORT@/@DB_JPA_NAME@?autoReconnect=true&amp;characterEncoding=utf8&amp;useSSL=false" />

</GlobalNamingResources>

20 changes: 20 additions & 0 deletions etc/tomcat10/server-ports.xml.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
--- server.xml
+++ server.xml
@@ -23,7 +23,7 @@
define subcomponents such as "Valves" at this level.
Documentation at /docs/config/server.html
-->
-<Server port="8005" shutdown="SHUTDOWN">
+<Server port="@SHUTDOWN_PORT@" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
@@ -107,7 +107,7 @@
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
-->
- <Connector address="0.0.0.0" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
+ <Connector address="0.0.0.0" port="@HTTP_PORT@" protocol="org.apache.coyote.http11.Http11NioProtocol"
enableLookups="false" redirectPort="8443" bindOnInit="false"
connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="UTF-8"
41 changes: 41 additions & 0 deletions etc/tomcat10/server-postgres.xml.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
--- server.xml
+++ server.xml
@@ -59,31 +59,31 @@
<Resource name="exo-idm_portal" auth="Container" type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
initialSize="5" maxActive="20" minIdle="5" maxIdle="15" maxWait="10000"
- validationQuery="SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS" validationQueryTimeout="5"
+ validationQuery="SELECT 1" validationQueryTimeout="5"
testWhileIdle="true" testOnBorrow="true" testOnReturn="false"
timeBetweenEvictionRunsMillis="30000" minEvictableIdleTimeMillis="60000"
removeAbandonedOnBorrow="true" removeAbandonedOnMaintenance="true" removeAbandonedTimeout="300" logAbandoned="false"
- username="sa" password="" driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:file:${exo.data.dir}/hsql/exo-plf;shutdown=true;hsqldb.write_delay=false;hsqldb.tx=mvcc;" />
+ username="@DB_IDM_USR@" password="@DB_IDM_PWD@" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://@DB_IDM_HOST@:@DB_IDM_PORT@/@DB_IDM_NAME@" />

<!-- eXo JCR Datasource for portal -->
<Resource name="exo-jcr_portal" auth="Container" type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
initialSize="5" maxActive="20" minIdle="5" maxIdle="15" maxWait="10000"
- validationQuery="SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS" validationQueryTimeout="5"
+ validationQuery="SELECT 1" validationQueryTimeout="5"
testWhileIdle="true" testOnBorrow="true" testOnReturn="false"
timeBetweenEvictionRunsMillis="30000" minEvictableIdleTimeMillis="60000"
removeAbandonedOnBorrow="true" removeAbandonedOnMaintenance="true" removeAbandonedTimeout="300" logAbandoned="false"
- username="sa" password="" driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:file:${exo.data.dir}/hsql/exo-plf;shutdown=true;hsqldb.write_delay=false;hsqldb.tx=mvcc;" />
+ username="@DB_JCR_USR@" password="@DB_JCR_PWD@" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://@DB_JCR_HOST@:@DB_JCR_PORT@/@DB_JCR_NAME@" />

<!-- eXo JPA Datasource for portal -->
<Resource name="exo-jpa_portal" auth="Container" type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
initialSize="5" maxActive="20" minIdle="5" maxIdle="15" maxWait="10000"
- validationQuery="SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS" validationQueryTimeout="5"
+ validationQuery="SELECT 1" validationQueryTimeout="5"
testWhileIdle="true" testOnBorrow="true" testOnReturn="false"
timeBetweenEvictionRunsMillis="30000" minEvictableIdleTimeMillis="60000"
removeAbandonedOnBorrow="true" removeAbandonedOnMaintenance="true" removeAbandonedTimeout="300" logAbandoned="false"
- username="sa" password="" driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:file:${exo.data.dir}/hsql/exo-plf;shutdown=true;hsqldb.write_delay=false;hsqldb.tx=mvcc;" />
+ username="@DB_JPA_USR@" password="@DB_JPA_PWD@" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://@DB_JPA_HOST@:@DB_JPA_PORT@/@DB_JPA_NAME@" />

</GlobalNamingResources>


0 comments on commit 1c5763e

Please sign in to comment.