Ubuntu Update Version 18.10
Cet article présente la mise à jour de la version 18.10
, pour laquelle quels problèmes ont été rencontrés.
Votre avis
Nobody voted on this yet
|
|
Open JDK
La version est mise à jour et prend en compte l'organisation en module de Java
. Or les scripts de démarrage de Tomcat
ont été modifiés pour utiliser systemd.
Le fichier de configuration /lib/systemd/system/tomcat8.service
déclare la variable ExecStart
pour spécifier le script à exécuter.
#
# Systemd unit file for Apache Tomcat
#
[Unit]
Description=Apache Tomcat 8.5 Web Application Server
Documentation=https://tomcat.apache.org/tomcat-8.5-doc/index.html
After=network.target
[Service]
# Configuration
Environment="CATALINA_HOME=/usr/share/tomcat8"
Environment="CATALINA_BASE=/var/lib/tomcat8"
Environment="CATALINA_TMPDIR=/tmp"
Environment="JAVA_OPTS=-Djava.awt.headless=true"
EnvironmentFile=-/etc/default/tomcat8
# Lifecycle
Type=simple
ExecStartPre=+/usr/libexec/tomcat8/tomcat-update-policy.sh
ExecStart=/bin/sh /usr/libexec/tomcat8/tomcat-start.sh
SuccessExitStatus=143
# Logging
SyslogIdentifier=tomcat8
# Security
User=tomcat8
Group=tomcat8
PrivateTmp=yes
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
Le contenu du script est le suivant et un le script /usr/libexec/tomcat8/tomcat-locate-java.sh
est exécuté au démarrage.
#!/bin/sh
#
# Startup script for Apache Tomcat with systemd
#
set -e
# Find the Java runtime and set JAVA_HOME
. /usr/libexec/tomcat8/tomcat-locate-java.sh
# Set the JSP compiler if configured in the /etc/default/tomcat8 file
[ -n "$JSP_COMPILER" ] && JAVA_OPTS="$JAVA_OPTS -Dbuild.compiler=\"$JSP_COMPILER\""
export JAVA_OPTS
# Enable the Java security manager?
SECURITY=""
[ "$TOMCAT_SECURITY" = "yes" ] && SECURITY="-security"
# Start Tomcat
cd $CATALINA_BASE && exec $CATALINA_HOME/bin/catalina.sh run $SECURITY
Et c'est dans ce script, /usr/libexec/tomcat8/tomcat-locate-java.sh
, que la recherche de la JVM a été déplacé.
#!/bin/sh
#
# Script looking for a Java runtime suitable for running Tomcat
#
# The script looks for the default JRE/JDK, OpenJDK and Oracle JDK
# as packaged by java-package. The Java runtime found is exported
# in the JAVA_HOME environment variable.
#
set -e
# Find the Java runtime if JAVA_HOME isn't already defined
if [ -z "$JAVA_HOME" ]; then
# This function sets the variable JDK_DIRS
find_jdks()
{
for java_version in 11 10 9 8
do
for jvmdir in /usr/lib/jvm/java-${java_version}-openjdk-* \
/usr/lib/jvm/jdk-${java_version}-oracle-* \
/usr/lib/jvm/jre-${java_version}-oracle-* \
/usr/lib/jvm/java-${java_version}-oracle \
/usr/lib/jvm/oracle-java${java_version}-jdk-* \
/usr/lib/jvm/oracle-java${java_version}-jre-*
do
if [ -d "${jvmdir}" ]
then
JDK_DIRS="${JDK_DIRS} ${jvmdir}"
fi
done
done
}
# The first existing directory is used for JAVA_HOME
JDK_DIRS="/usr/lib/jvm/default-java"
find_jdks
# Look for the right JVM to use
for jdir in $JDK_DIRS; do
if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
JAVA_HOME="$jdir"
fi
done
export JAVA_HOME
fi
if [ -z "$JAVA_HOME" ]; then
echo "<2>No JDK or JRE found - Please set the JAVA_HOME variable or install the default-jdk package"
exit 1
fi
Comme pour les précédentes versions, ce lien default-java
pointe par défaut sur l'instance de openjdk
.
#ll /usr/lib/jvm total 108 drwxr-xr-x 6 root root 4096 nov. 26 16:12 ./ drwxr-xr-x 111 root root 69632 nov. 20 12:09 ../ lrwxrwxrwx 1 root root 33 nov. 26 16:10 default-java -> /usr/lib/jvm/java-1.11.0-openjdk-amd64/ lrwxrwxrwx 1 root root 21 avril 21 2018 java-1.11.0-openjdk-amd64 -> java-11-openjdk-amd64/ -rw-r--r-- 1 root root 1994 oct. 22 20:46 .java-1.11.0-openjdk-amd64.jinfo drwxr-xr-x 7 root root 4096 nov. 7 00:15 java-11-openjdk-amd64/ lrwxrwxrwx 1 root root 20 avril 13 2016 java-1.8.0-openjdk-amd64 -> java-8-openjdk-amd64/ -rw-r--r-- 1 root root 2600 oct. 22 19:25 .java-1.8.0-openjdk-amd64.jinfo drwxr-xr-x 8 root root 4096 mai 11 2016 java-7-oracle/ -rw-r--r-- 1 root root 2543 mai 11 2016 .java-7-oracle.jinfo drwxr-xr-x 5 root root 4096 avril 24 2016 java-8-openjdk-amd64/ drwxr-xr-x 8 root root 4096 avril 24 2017 java-8-oracle/ -rw-r--r-- 1 root root 2643 avril 24 2017 .java-8-oracle.jinfo
Donc d'après le script de démarrage c'est /usr/lib/jvm/default-java
, lien sur /usr/lib/jvm/java-1.11.0-openjdk-amd64/
, qui est utilisé.
Cependant, toutes les applications déployées sur Tomcat
ne sont pas forcément compatibles avec une telle version de Java
. Dans ce cas, il est plus simple de rester sur une "ancienne" version de Java
, nécessitant uniquement de changer le lien default-java
.
#sudo rm /usr/lib/jvm/default-java #sudo ln -s /usr/lib/jvm/java-8-openjdk-amd64 /usr/lib/jvm/default-java