Mise à niveau Oracle JDK pour domaine Weblogic

Dans cet article, nous allons voir comment mettre à jour la version de son JDK sur les serveurs Weblogic.
A la suite de mises à jour de patches de sécurité, il est possible d’hériter d’une installation non sécurisée. Dans ce cas de figure, Oracle nous avertit alors de cette incohérence sur la console d’administration avec ce message.

Nous sommes donc encouragés à devoir effectuer une mise à jour du JDK post-installation.

2 cas de figures sont alors possibles :

  • Premier cas, une mise à jour via l’assistant pour mettre à jour l’installation en changeant la version du JDK.
  • Second cas, une mise à jour « manuelle » des références de votre JDK dans les sources.

Nous allons ici nous intéresser à la mise à jour « manuelle » des références dans nos sources sous environnement LINUX.

Les références à mettre à jour se situent dans 2 principaux dossiers de configuration :

  • Le dossier principal du domaine que nous appellerons « /Domain_Home« 
  • Le dossier principal du produit Oracle que nous appellerons « /Oracle_Home« 

 

Mise à jour JAVA_HOME

Aller sur le site d’Oracle pour télécharger la dernière release du JDK demandé : https://www.oracle.com/fr/java/technologies/javase-downloads.html.

En ligne de commande, taper la commande suivante pour trouver quelle est la valeur actuelle de votre JAVA_HOME.

$ /Oracle_Home/oui/bin/getProperty.sh JAVA_HOME
/yourPath/oracle/java/jdk1.X.0_Y

Vous récupérez alors le chemin du JDK actuel, où vous y déposerez également le nouveau JDK téléchargé.
Mettre à jour les permissions de votre nouveau dossier, sous dossiers et fichiers avec le code « 777 » pour faciliter l’utilisation des ressources s’y trouvant.
Ainsi vous devriez vous retrouver avec une arborescence de la sorte :

/yourPath/oracle/java/$ ls
/yourPath/oracle/java/jdk1.X.0_Y       (JDK actuel à remplacer)
/yourPath/oracle/java/jdk1.A.0_B      (JDK téléchargé à utiliser)

Ensuite, modifier alors la valeur de votre JAVA_HOME.

Sauvegarde de votre ancienne valeur de JAVA_HOME dans OLD_JAVA_HOME :

$ /Oracle_Home/oui/bin/setProperty.sh -name OLD_JAVA_HOME -value /yourPath/oracle/java/jdk1.X.0_Y
Property OLD_JAVA_HOME successfully set to "/yourPath/oracle/java/jdk1.X.0_Y"

Mise à jour de votre JAVA_HOME :

$ /Oracle_Home/oui/bin/setProperty.sh -name JAVA_HOME -value /yourPath/oracle/java/jdk1.A.0_B
Property JAVA_HOME successfully set to "/yourPath/oracle/java/jdk1.A.0_B"

Puis, contrôler la bonne mise à jour de votre variable d’environnement JAVA_HOME :

$ /Oracle_Home/oui/bin/getProperty.sh JAVA_HOME
/yourPath/oracle/java/jdk1.A.0_B

 

Mise à jour des références dans le « Domaine Home »

Voici une commande à personnaliser qui vous permettra de faire le remplacement des références :

$ files=$(grep -irl --exclude={'*log*','*out*','*backup*','*bck*','*bkp*','*bak*','*old*','*jar*'} --exclude-dir={'*log*','*servers*'} jdk1.X.0_Y /Domain_Home 2>/dev/null | awk '{print $1}' | cut -d':' -f1 | sort -u) && echo $files | xargs sed -i'-$(date +"%m_%d_%Y_%H%I%S").bak' 's/jdk1.X.0_Y/jdk1.A.0_B/g' && echo $files | tr " " "\n" > UpdatedFilesAboutVersionJdkInDomainHome-$(date +"%m_%d_%Y_%H%I%S").log

Détails des commandes :

  • grep jdk1.X.0_Y /Domain_Home : recherche des occurrences de la chaînes de caractères « jdk1.X.0_Y » dans le « domaine home »
  • exclude / exclude-dir : exclusion des sources fichiers ou répertoires n’ayant aucun intérêt à être modifier
  • files=$(…)  : récupérer la liste des chemins de chaque fichiers (sans doublon)
  • xargs sed ‘s/jdk1.X.0_Y/jdk1.A.0_B/g’ : substitution selon la liste de chemins précédemment identifiés des occurrences de jdk1.X.0_Y (ancienne valeur de JDK) par jdk1.A.0_B (nouvelle valeur du JDK téléchargé)
  • -i’-$(date + »%m_%d_%Y_%H%I%S »).bak’ : archivage horodaté du fichier original avant substitution
  • echo $files | tr  »  » « \n » > UpdatedFilesAboutVersionJdkInDomainHome-$(date + »%m_%d_%Y_%H%I%S »).log : création d’un fichier de log horodaté des fichiers mis à jour par substitutions.

 

Mise à jour des références de « l’Oracle Home »

De la même manière, voici la commande pour mettre à jour les références sous l’Oracle Home :

$ files=$(grep -irl --exclude={'*log*','*out*','*backup*','*bck*','*bkp*','*bak*','*old*','*jar*'} --exclude-dir={'*log*','*patch_storage*','*inventory*','*soa_issue*','*rda*'} jdk1.X.0_Y /Oracle_Home 2>/dev/null | awk '{print $1}' | cut -d':' -f1 | sort -u) && echo $files | xargs sed -i'-$(date +"%m_%d_%Y_%H%I%S").bak' 's/jdk1.X.0_Y/jdk1.A.0_B/g' && echo $files | tr " " "\n" > UpdatedFilesAboutVersionJdkInOracleHome-$(date +"%m_%d_%Y_%H%I%S").log

Pour finir, redémarrer vos serveurs Weblogic ainsi que le Node Manager associé.