Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

🧠 Oracle WebLogic – Guide complet (Admin, DevOps, Kubernetes)

Guide IDEO‑Lab trĂšs densifiĂ© : architecture WebLogic, domaines, clusters, sĂ©curitĂ©, WLST, patching, observabilitĂ©, CI/CD, Docker & Kubernetes Operator.

RĂ©fĂ©rences : documentation Oracle WebLogic 14c (14.1.2), nouveautĂ©s 14.1.2 (dĂ©c. 2024), Kubernetes Operator (repo Oracle). citeturn0search0turn0search1turn0search6turn0search3turn0search13

1.1

WebLogic : vue d’ensemble

Serveur Java EE/Jakarta, domaines, AdminServer, Managed Servers, clusters, services (JMS/JTA/JDBC).

DomainAdminCluster
1.2

Architecture & composants

Domain / machines / Node Manager / deployments / resources / sécurité / logs.

NodeMgrResourcesLogs
1.3

Installation & prérequis

JDK, installer, Oracle Home, inventory, silent install, variables d’environnement.

JDK 17/21SilentORACLE_HOME
2.1

CrĂ©ation d’un domaine

Configuration Wizard, templates, ports, nodemanager, start/stop propre, layout prod.

config.shProd LayoutBoot Identity
2.2

Admin Console & Remote Console

Navigation, ressources, sécurité, déploiements, health, métriques, lock & change center.

ConsoleChange CenterHealth
2.3

WLST : l’outil ultime

Automatiser tout : datasources, JMS, users, deploy, start/stop, reporting.

Python/JythonOffline/OnlineGitOps
3.1

Déploiements (WAR/EAR)

Stages, targets, plan.xml, rollouts, versioning, zero‑downtime patterns.

EARTargetsPlan
3.2

JDBC / Datasources

Pool, validation, XA vs non‑XA, tuning, diagnostics, encryption, secrets.

PoolingXATuning
3.3

JMS / Messaging

Servers, modules, queues/topics, distributed destinations, SAF, transactions.

JMS ServerDDSAF
4.1

Clusters & HA

Session replication, load‑balancing, migrations, health monitoring, rolling restart.

HASessionLB
4.2

Ops : start/stop, services

systemd, Node Manager, logs, rotation, diagnostics, scripts de runbook.

systemdRunbookRotation

Sécurité (Realm, SSL, SSO)

Users/groups, policies, keystores, TLS, SAML/OIDC, audit, durcissement.

SSL/TLSSAMLHardening

Observabilité (Prom/Grafana)

Logs, métriques, exporter, dashboards, capacity planning, SLO/SLI.

GrafanaPrometheusSLO
5.1

Patching & cycle de vie

OPatch, PSU/CPU, plan de maintenance, rollback, compat, inventaire.

OPatchRollbackInventory
5.2

Performance & tuning

JVM, GC, threads, execute queues, JDBC pool, I/O, latence, profiling.

JVMGCThreading

Docker & Kubernetes Operator

Images, Domain CRD, secrets, ingress, rolling updates, scaling, day‑2 ops.

OperatorHelmDay‑2
6.1

CI/CD (Jenkins, GitOps)

Pipelines, artefacts, déploiements contrÎlés, smoke tests, approvals, rollback.

JenkinsGroovyGitOps
6.2

Troubleshooting

Logs clés, thread dumps, heap dumps, stuck threads, JDBC leaks, JMS stuck.

ThreadDumpHeapDumpStuck
7.1

Cheat‑sheet

Commandes, WLST snippets, checklists prod, ports, fichiers, quick wins.

cmdWLSTrunbook
1.1 WebLogic : vue d’ensemble (et quand l’utiliser)
WebLogic, c’est quoi ?

Oracle WebLogic Server est un serveur d’applications Java orientĂ© entreprise : exĂ©cution d’applications WAR/EAR, support des APIs Java/Jakarta EE (selon versions), intĂ©grations JMS/JTA/JDBC, clustering, sĂ©curitĂ©, et tooling d’admin.

  • Usage typique : SI bancaire/assurance, middleware Oracle, SOA, applis monolithes Java, legacy modernisĂ©, contraintes d’audit.
  • Fort : robustesse, “ops knobs” trĂšs fournis, HA, gouvernance, intĂ©gration FMW.
  • CoĂ»t / complexitĂ© : plus Ă©levĂ© qu’un Tomcat/Jetty/Spring Boot standalone.
WebLogic 14c (14.1.2) est un jalon important : certification JDK 17/21 et continuitĂ© Jakarta EE 8. citeturn0search6
Versioning & repĂšres
ObjetÀ retenir
WebLogic 14cVersion 14.1.2 disponible (installers). citeturn0search0turn0search4
Notes 14.1.2Documentation initiale publiĂ©e dĂ©c. 2024. citeturn0search1
Inter‑opCompatibilitĂ© & scĂ©narios client/serveur Ă©voluent entre 12c/14c/15c. citeturn0search8
K8s OperatorOperator Oracle pour exĂ©cuter des domains WLS sur Kubernetes. citeturn0search3turn0search13
Emplacement image
SchĂ©ma “Domain / AdminServer / Managed Servers / Cluster / Node Manager / LB”.
Le concept de Domaine

Le Domain est l’unitĂ© de configuration : il contient les servers, clusters, deployments, resources (JDBC/JMS
), sĂ©curitĂ©, logs. Il est gĂ©nĂ©ralement stockĂ© dans un rĂ©pertoire DOMAIN_HOME.

3 rĂŽles structurants
  • AdminServer : console + MBeans + centre de contrĂŽle (Change Center).
  • Managed Server(s) : exĂ©cution des applis et ressources.
  • Node Manager : agent sur machine, start/stop/restart des servers, utile en prod/cluster.
Domain
├─ AdminServer (7001)
├─ ClusterA
│  ├─ ms1 (8001)
│  ├─ ms2 (8002)
├─ Resources
│  ├─ JDBC (DataSources)
│  ├─ JMS (Modules, Servers)
│  ├─ Security Realm
└─ Node Manager (sur chaque machine)
Fichiers clés (prod)
CheminRĂŽle
DOMAIN_HOME/config/config.xmlConfiguration principale du domain (à manipuler avec précaution).
DOMAIN_HOME/servers/*/logsLogs servers (Admin + Managed).
DOMAIN_HOME/security/Boot identity, policies, realm config (selon cas).
DOMAIN_HOME/bin/Scripts start/stop, setDomainEnv.
Bon rĂ©flexe DevOps : sĂ©parer ORACLE_HOME (binaries) et DOMAIN_HOME (config), versionner l’infra-as-code (WLST/Ansible), et traiter le domain comme un artefact reconstruit.
Services WebLogic qu’on rencontre tout le temps
ServiceÀ quoi ça sertPoints DevOps
JDBCPools de connexions DB + transactions (XA/non‑XA).Validation, leak detection, sizing, secrets.
JMSMessaging (queues/topics), modules, destinations distribuées.HA, quotas, stuck messages, saf/ordering.
JTATransactions distribuées.XA tuning, timeouts, heuristics, logs.
Security RealmAuthN/AuthZ (users/groups/roles/policies).SSO, audit, least privilege.
MBeansManagement model (monitoring/config).WLST, exporter metrics, automation.
Emplacement image
Capture “Admin Console → Services → Data Sources / JMS Modules / Security Realms”.
Quand WebLogic est pertinent
  • ÉcosystĂšme Oracle / Fusion Middleware / SOA / OSB.
  • Applications enterprise multi-modules nĂ©cessitant clustering, gouvernance, console d’admin riche.
  • Contraintes fortes : audit, traçabilitĂ©, segmentation, environnements stricts.
Quand un runtime plus léger suffit
  • Microservices Spring Boot + Actuator + service mesh (K8s) : souvent plus simple et moins cher.
  • Applications “stateless” simples : Tomcat/Jetty/Undertow.
  • Si vous voulez “immutable infra” totale : container-first, config externalisĂ©e.
L’approche moderne : garder WebLogic lĂ  oĂč il apporte une vraie valeur (legacy critique / FMW), et dĂ©placer le reste vers des stacks cloud-native.
1.2 Architecture & composants (prod-ready)
Layout recommandé (binaries vs domains)
/u01/app/oracle
├─ middleware/               # ORACLE_HOME (WLS + Coherence)
│  ├─ wlserver
│  ├─ coherence
│  └─ ...
├─ domains/
│  ├─ prod_domainA/          # DOMAIN_HOME
│  └─ prod_domainB/
└─ inventory/                # oraInventory (selon install)
  • Principe : sĂ©parer l’installation (immutable-ish) de la config (domain).
  • Gestion : ORACLE_HOME patchĂ© par OPatch, domain reconstruit/maĂźtrisĂ© via WLST/Ansible.
  • Secrets : keystores + credentials store + external secret manager (si possible).
Composants & responsabilités
ComposantResponsabilitéOps notes
AdminServerConsole, config, MBeansRestreindre l’accùs, HA via backup + fast restore
Managed ServersRuntime apps/resourcesCluster, rolling restart, probes health
Node ManagerStart/stop serveurSystemd service, secure listener
DB (JDBC)PersistencePool tuning, timeouts, SSL, rotation secrets
LB / IngressRoutageSticky sessions vs replication, TLS termination
Emplacement image
Diagramme rĂ©seau + DMZ (LB → Managed) + Admin isolĂ©.
Ports & flux : checklist rapide
Exemple (Ă  adapter)
AdminServer : 7001 (HTTP) / 7002 (HTTPS)
Managed ms1 : 8001 (HTTP) / 8002 (HTTPS)
Managed ms2 : 8011 (HTTP) / 8012 (HTTPS)
NodeManager : 5556 (SSL) ou 5558 selon conf
DB          : 1521 (Oracle) / 5432 (PostgreSQL)
LB/Ingress  : 443 (TLS)
RĂšgle d’or : AdminServer non exposĂ© Internet. AccĂšs via bastion/VPN/Zero‑Trust.
Flux typiques
  • Clients → LB/Ingress : 443
  • LB → Managed Servers : HTTP/HTTPS (internes)
  • Admin console → AdminServer : rĂ©seau d’admin uniquement
  • AdminServer → Managed : management, config, monitoring
  • Node Manager ↔ servers : start/stop
Documente tes ACL / SG / firewall : “qui parle à qui”, et pourquoi.
Stratégies LB
  • Round‑robin : ok si applis stateless ou sessions rĂ©pliquĂ©es.
  • Sticky sessions : simple, mais attention aux dĂ©sĂ©quilibres et aux failovers.
  • Health checks : endpoints dĂ©diĂ©s + seuils; sortir un node avant un restart.
Pattern “zero downtime”
  1. Drain ms1 au LB
  2. Redeploy/restart ms1
  3. Warmup + smoke tests
  4. Re‑enable ms1, puis ms2
Headers & proxy awareness

En environnement proxy/LB, vérifie :

  • Headers X‑Forwarded‑For / X‑Forwarded‑Proto
  • Réécriture des URLs, redirect HTTPS, HSTS
  • Limites : taille headers, timeouts, keepalive
Emplacement image
Extrait config Nginx/HAProxy/ALB ciblant ms1/ms2.
ContrĂŽler le drift
  • Source de vĂ©ritĂ© : scripts WLST + Ansible + templates.
  • DĂ©conseillĂ© : modifications manuelles non tracĂ©es dans la console.
  • Process : PR → review → apply en environnement → validation → prod.
Git repo
├─ wlst/
│  ├─ 10-datasources.py
│  ├─ 20-jms.py
│  ├─ 30-security.py
│  └─ 40-deploy.py
├─ ansible/
│  ├─ roles/weblogic_domain/
│  └─ inventories/prod
└─ docs/runbooks/
Backups (pragmatiques)
  • Snapshot DOMAIN_HOME (hors caches/temp) + keystores.
  • Exporter la config “logique” via WLST (idempotent) → reconstructible.
  • Pour les applis : artefacts versionnĂ©s (Nexus/Artifactory/S3).
Ton objectif DevOps : rebuild plutĂŽt que restore. Le restore devient le plan B.
1.3 Installation & prérequis (prod + silent)
Prérequis OS (checklist)
  • Compte systĂšme dĂ©diĂ© (ex: weblogic), droits contrĂŽlĂ©s.
  • FS : volume sĂ©parĂ© pour ORACLE_HOME, DOMAIN_HOME, logs.
  • Limits : nofile, nproc adaptĂ©s (systemd ulimits).
  • Temps : NTP OK (certificats / logs / cluster).
  • RĂ©seau : DNS stable, hostnames cohĂ©rents, reverse si requis.
Emplacement image
Screenshot d’un arbre /u01/app/oracle propre.
Artefacts officiels

Oracle fournit plusieurs installers (generic, quick, slim, etc.). citeturn0search0turn0search4

InstallerCas d’usage
GenericDev + prod (recommandĂ© si tu veux l’ensemble des features).
QuickDev (rapide) – pas idĂ©al pour industrialiser.
SlimImages containers (K8s) quand console/clients ne sont pas requis. citeturn0search4
Silent install (pattern)

Objectif : reproductible, non interactif, compatible CI/CD.

# 1) Préparer un JDK (ex: 17) et JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-17
export PATH=$JAVA_HOME/bin:$PATH

# 2) Lancer l'installer (exemple générique)
java -jar fmw_14.1.2.0.0_wls.jar -silent -responseFile /tmp/wls.rsp -invPtrLoc /tmp/oraInst.loc

# 3) Vérifier l'inventaire / logs
cat /u01/app/oracle/inventory/logs/*.log
Tip : stocke les response files (.rsp) dans Git (sans secrets), et injecte le reste par variables/secret manager.
Emplacement image
Capture d’une install silent + logs success.
Variables classiques
export ORACLE_HOME=/u01/app/oracle/middleware
export WL_HOME=$ORACLE_HOME/wlserver
export DOMAIN_HOME=/u01/app/oracle/domains/prod_domainA

# facultatif
export MW_HOME=$ORACLE_HOME
export PATH=$WL_HOME/server/bin:$PATH

Les scripts setDomainEnv.sh (dans DOMAIN_HOME/bin) posent le classpath et la JVM.

Runbooks DevOps
  • 1 page : “comment dĂ©marrer/stopper proprement” (Admin + cluster)
  • 1 page : “oĂč sont les logs” + patterns d’erreurs
  • 1 page : “procĂ©dure patch/rollback”
  • 1 page : “procĂ©dure incident (stuck threads / heap)”
Le vrai gain prod : documentation actionnable + automatisation.
JDK : ce que dit Oracle

WebLogic 14.1.2 est certifiĂ© pour JDK 17 et JDK 21. citeturn0search6

  • Choisir une LTS stable et aligner toutes les machines d’un cluster.
  • Standardiser : mĂȘme vendor, mĂȘmes options JVM, mĂȘmes patchlevels.
Compat / interop

En coexistence 12c/14c/15c, vĂ©rifie les scĂ©narios d’interop (protocoles, clients, jars). citeturn0search8

Anti‑piĂšge : “ça marche en dev” mais pas en prod car le client jar/protocole n’est pas alignĂ©.
2.1 CrĂ©ation d’un domaine (wizard, prod layout, boot identity)
Configuration Wizard (logique)
  1. Choisir un template (Base WLS / FMW Infrastructure / etc.)
  2. Définir : Domain name, Admin user, Admin port, Java options
  3. Créer : Managed Servers, Clusters, Machines
  4. Configurer : DataSources, JMS, Keystores, SSL (au moins Admin)
# Lancement typique (Linux)
$ORACLE_HOME/oracle_common/common/bin/config.sh
Topologie “starter” (raisonnable)
MachineA
  - AdminServer
  - NodeManager
MachineB
  - ms1 (ClusterA)
  - NodeManager
MachineC
  - ms2 (ClusterA)
  - NodeManager
+ LB devant ms1/ms2
But : garder Admin isolé, et mettre le trafic utilisateur uniquement sur le cluster.
Emplacement image
Screenshots Wizard : creation domain + cluster + managed.
Boot identity (start sans mot de passe en clair)

Pattern : stocker les credentials chiffrĂ©s par WebLogic dans boot.properties (puis ils sont “encrypted” au premier start).

# Exemple (Ă  placer dans DOMAIN_HOME/servers/AdminServer/security/boot.properties)
username=weblogic
password=SuperSecret123

# Premier démarrage : WebLogic chiffre le password
En prod, évite les secrets en clair : privilégie un secret manager + injection contrÎlée + permissions FS strictes.
Node Manager : rĂŽle
  • DĂ©marrer/arrĂȘter/redĂ©marrer Managed Servers via AdminConsole/WLST
  • Surveillance et restart contrĂŽlĂ©
  • Mode SSL recommandĂ© (listener sĂ©curisĂ©)
# Démarrer Node Manager (selon installation)
$WL_HOME/server/bin/startNodeManager.sh

# Config Node Manager :
DOMAIN_HOME/nodemanager/nodemanager.properties
systemd (exemple)
# /etc/systemd/system/weblogic-nodemanager.service
[Unit]
Description=WebLogic Node Manager
After=network.target

[Service]
Type=simple
User=weblogic
Group=weblogic
Environment=JAVA_HOME=/usr/lib/jvm/java-17
ExecStart=/u01/app/oracle/middleware/wlserver/server/bin/startNodeManager.sh
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
MĂȘme approche pour AdminServer et Managed Servers, via des scripts dĂ©diĂ©s + env contrĂŽlĂ©.
Checklist “go‑live”
  • ✅ AdminServer non exposĂ©
  • ✅ TLS activĂ© (au minimum Admin + LB)
  • ✅ Logs rotation + centralisation (ELK/Opensearch/Loki)
  • ✅ JVM opts standardisĂ©s + heap sizing
  • ✅ Health endpoints + LB checks
  • ✅ Backups domain + keystores + artefacts
  • ✅ Runbooks incident + patch + rollback
  • ✅ WLST/Ansible pour reconstruction
  • ✅ ObservabilitĂ© (metrics + dashboards)
  • ✅ Tests : smoke / perf / failover
  • ✅ Least privilege (users/roles/policies)
2.2 Admin Console & Remote Console (navigation utile)
Zones que tu vas visiter 80% du temps
  • Environment → Servers (Admin/Managed, Ă©tats, ports, logs)
  • Environment → Clusters (HA, membership)
  • Services → Data Sources (tests connexion, pool)
  • Services → Messaging (JMS) (queues, quotas, stuck)
  • Deployments (targets, plans, start/stop, versions)
  • Security Realms (users/groups/roles/policies/audit)
Actions “prod safe”
  • Lecture/monitoring (OK)
  • Tests DataSource (OK)
  • Redeploy contrĂŽlĂ© (OK si process)
  • Éviter les changements non tracĂ©s (sinon drift)
Emplacement image
Capture : “Services → Data Sources → Monitoring”.
Change Center : comprendre le verrou

WebLogic peut exiger un “lock & edit” avant d’appliquer certaines modifications. En prod, impose une gouvernance :

  • FenĂȘtres de changement, traçabilitĂ©, qui a lockĂ©, pourquoi
  • Validation (preprod) avant activation prod
  • Automatisation WLST/Ansible prĂ©fĂ©rĂ©e
Moins de “clicops”, plus de scripts idempotents.
Signaux rouges classiques
  • Stuck threads / hogging threads
  • JDBC pool saturation / connection leaks
  • GC pauses trop longues, heap pressure
  • JMS stuck messages / quotas
# Réflexe incident
1) Identifier le scope (ms1/ms2 ? cluster ?)
2) Lire logs ciblés (server + access + datasource)
3) Thread dump (si stuck)
4) Vérifier DB / réseau / LB
5) Mitigation (drain + restart node) si nécessaire
Diagnostics utiles
  • Server log + access log + GC log + stdout/stderr
  • Thread dumps multi‑shots (3 Ă  10 secondes d’intervalle)
  • Heap dump si OOM/Leak
Emplacement image
Capture : “Servers → Monitoring → Threads”.
Anti‑patterns (Ă  Ă©viter en prod)
  • Modifier la config Ă  la main, sans PR, puis oublier → drift garanti
  • Mettre AdminServer sur le mĂȘme LB que le trafic client
  • Utiliser un user admin partout (pas de sĂ©paration des rĂŽles)
  • Absence de rotation logs → disque plein → outage “bĂȘte”
  • Pas de runbook incident/patched → temps de MTTR explose
2.3 WLST (WebLogic Scripting Tool) : automation & GitOps
Deux modes
  • Offline WLST : crĂ©er/modifier un domain sans serveur dĂ©marrĂ© (templates, config).
  • Online WLST : se connecter Ă  AdminServer pour piloter runtime/config.
# Online
connect('weblogic','***','t3s://adminhost:7002')
serverConfig()
cd('/Servers')
ls()
Pourquoi c’est “l’arme DevOps”
  • Automatiser la console (datasources, JMS, users, deploy)
  • Versionner les changements (PR, review)
  • Rebuild domains (immutable mindset)
WLST + Ansible = runbooks exécutables.
Exemples WLST (Ă  adapter)
Créer une DataSource (online)
connect('weblogic','***','t3s://admin:7002')
edit(); startEdit()

cd('/')
create('AppDS','JDBCSystemResource')
cd('JDBCSystemResources/AppDS/JdbcResource/AppDS')
create('myJdbcDataSourceParams','JDBCDataSourceParams')
cd('JDBCDataSourceParams/NO_NAME_0')
set('JNDINames', jarray.array([String('jdbc/AppDS')], String))

# driver params
cd('../JDBCDriverParams/NO_NAME_0')
set('Url','jdbc:oracle:thin:@//dbhost:1521/ORCLPDB1')
set('DriverName','oracle.jdbc.OracleDriver')
set('PasswordEncrypted','***')

save(); activate()
Déployer un EAR sur un cluster
connect('weblogic','***','t3s://admin:7002')

app='/artifacts/myapp-1.2.3.ear'

deploy(appName='myapp', path=app, targets='ClusterA', stageMode='stage')

# redeploy contrÎlé
# redeploy('myapp', path=app, targets='ClusterA')
Astuce : externaliser la version (tag), et tracer déploiement (build id, git sha).
Idempotence : le nerf de la guerre
  • Avant create() : vĂ©rifier si l’objet existe (ls + try/except)
  • Comparer la config actuelle vs dĂ©sirĂ©e (desired state)
  • Ne pas stocker de secrets en clair dans Git
  • Garder des scripts “petits” : 1 script = 1 domaine logique
# pattern simple
try:
  cd('/JDBCSystemResources/AppDS')
  print('AppDS exists')
except:
  cd('/')
  create('AppDS','JDBCSystemResource')
  print('AppDS created')
WLST en CI (Jenkins)
stage('Deploy WebLogic') {
  steps {
    sh '''
      export JAVA_HOME=/usr/lib/jvm/java-17
      export ORACLE_HOME=/u01/app/oracle/middleware
      $ORACLE_HOME/oracle_common/common/bin/wlst.sh wlst/40-deploy.py \
        -DappVersion=${GIT_COMMIT}
    '''
  }
}
Ajoute des smoke tests HTTP + rollback automatique si 5xx.
3.1 DĂ©ploiements (WAR/EAR) : patterns “prod”
WAR, EAR, targets
  • Target : AdminServer, managed server(s), cluster.
  • Stage mode : stage / nostage / external_stage (selon infra).
  • Libraries : shared libs, attention au coupling/upgrade.
Checklist dĂ©ploiement “safe”
  • ✅ Artefact immuable (build unique)
  • ✅ Config externalisĂ©e (plans/env vars)
  • ✅ Smoke tests post-deploy
  • ✅ Rollback rapide (artefact prĂ©cĂ©dent)
Deployment Plan : séparer code et config

Le plan permet de surcharger des paramùtres (ex: URLs, JNDI) sans rebuild l’EAR.

# Exemple :
myapp.ear
myapp-plan.xml

# Déploiement
# (console ou wlst deploy(..., planPath='myapp-plan.xml'))
Emplacement image
Extrait d’un plan.xml (remplacement d’URL, JNDI, context root).
Rolling update (cluster)
  1. Drain ms1 (LB) → redeploy sur ms1 → warmup
  2. Re-enable ms1
  3. Drain ms2 → redeploy sur ms2 → warmup
  4. Re-enable ms2
Avec sessions stateful : vérifier sticky vs replication + temps de bascule.
Artefacts & repo
  • Nexus/Artifactory/S3 : stocker myapp-1.2.3.ear
  • Taguer : version + git sha + build id
  • Conserver N versions (N=20) pour rollback rapide
# Naming robuste
myapp-1.2.3+sha.4f2c1a7.ear
myapp-plan-prod.xml
myapp-plan-preprod.xml
3.2 JDBC / Datasources : pool, XA, tuning
ParamÚtres pool (mnémo)
ParamĂštreButConseil
Initial/Min/MaxCapacité poolDimensionner sur load + DB limits
Connection Reserve TimeoutTimeout d’attenteDĂ©tecter saturation rapidement
Test On ReserveValider connexionÉviter connexions mortes
Inactive Connection TimeoutRecycler idleRéduit leaks invisibles
Anti‑piùges
  • Pool max trop Ă©levĂ© → DB s’écroule (trop de sessions)
  • Pas de tests → erreurs alĂ©atoires aprĂšs failover DB
  • Timeouts incohĂ©rents (appli vs WLS vs DB vs LB)
Le tuning JDBC, c’est du “capacity engineering”.
XA vs non‑XA (rĂ©sumĂ©)
  • Non‑XA : plus simple, plus rapide, pas de transaction distribuĂ©e.
  • XA : transactions distribuĂ©es (JTA) → plus complexe, logs, timeouts, heuristics.
Ne passe en XA que si c’est nĂ©cessaire (sinon complexitĂ© + perf hit).
Tests & monitoring
  • Utiliser “Test Data Source” en console (prĂ©-prod/prod)
  • Surveiller : Active connections, waiting, failures, leaks
  • Alertes : “reserve timeout” et “pool exhausted”
# Runbook incident JDBC
1) Vérifier DB (latence, sessions)
2) Vérifier pool (max, waiting)
3) Réduire load (LB) / scale cluster
4) Identifier leak (threads/stack)
5) Fix app + redeploy
Secrets & mots de passe
  • Éviter de committer des passwords dans des scripts
  • Utiliser un coffre (Vault/ASM/Secret Manager) + injection runtime
  • Permissions FS strictes sur DOMAIN_HOME et keystores
3.3 JMS : modules, destinations distribuées, SAF
ModĂšle mental JMS WebLogic
  • JMS Server : hĂ©berge les messages (souvent ciblĂ© sur un Managed Server)
  • JMS Module : dĂ©finit queues/topics, connection factories

  • Subdeployments : mapping module → JMS Server(s)
Points d’attention
  • Quotas (bytes/messages)
  • Redelivery / error destination
  • Transactions (JTA) et timeouts
Distributed Queue/Topic

Pour HA/scalabilité : distribuer les destinations sur plusieurs JMS Servers.

ClusterA
  JMS Server on ms1 -> member1
  JMS Server on ms2 -> member2
Distributed Queue -> member1 + member2
Planifier le routage/affinité et les scénarios de failover.
SAF (Store‑and‑Forward)

SAF sert à bufferiser/relayer des messages quand une destination distante n’est pas disponible.

  • Utile pour inter‑domain / inter‑DC, tolĂ©rance rĂ©seau
  • Surveiller la taille des stores et les backlogs
Runbook JMS incident (exemple)
SymptÎme: producers bloqués / queue qui grossit
1) Vérifier quotas / pause / production rate
2) Vérifier consumers (alive? backlog?)
3) Vérifier transactions / timeouts
4) Vérifier store (disk full?)
5) Mitigation: scale consumers, augmenter quotas, purge contrÎlée (si validée)
6) Post-mortem: cause racine (bug consumer, slow DB, etc.)
4.1 Clusters & HA : session, failover, rolling
Deux grandes approches
  • Stateless : le plus simple → LB round‑robin, scale horizontal.
  • Stateful : nĂ©cessite sticky sessions ou replication/HA store.
Composants HA
  • LB + health checks
  • Cluster membership + monitoring
  • Node Manager + redĂ©marrage contrĂŽlĂ©
  • Backends HA (DB, JMS stores)
Sessions HTTP : sticky vs replication
OptionAvantagesInconvénients
Sticky LBSimple, performantFailover session = potentiellement perdu
ReplicationMeilleur failoverOverhead réseau/CPU, complexité
Migrations / failover
  • Planifier : quelles ressources migrent (JMS, etc.)
  • Tester : “kill -9 ms1”, observer bascule
  • Documenter : temps de RTO, RPO
Rolling restart (procédure)
Pour chaque managed server:
1) Drain au LB
2) Stop via WLST/Console (graceful)
3) Start via Node Manager
4) Vérifier health + logs
5) Réintégrer au LB
4.2 Ops : services, logs, rotation, runbooks
Start/Stop : rĂšgles simples
  1. Démarrer Node Manager
  2. Démarrer AdminServer
  3. Démarrer Managed Servers (un à un) / cluster
  4. Vérifier health, logs, datasources, JMS
# Stop (graceful)
1) Drain LB
2) stop managed servers
3) stop AdminServer
4) stop Node Manager
Logs utiles (oĂč regarder)
TypeEmplacementQuand
Server logDOMAIN_HOME/servers/*/logs/*.logErreurs runtime
Access logselon conf (server/logs)Trafic HTTP, codes
StdoutDOMAIN_HOME/servers/*/logs/*.outStart, exceptions
GC logselon JVM optsPauses, tuning
Rotation : Ă©viter l’outage “disque plein”
  • Activer rotation native + logrotate OS si besoin
  • Centraliser (ELK/Opensearch/Loki) : plus simple pour incident
  • Mettre des alertes : disk usage > 80%
Runbook minimal (1 page)
- URL Admin (VPN) : https://adminhost:7002/console
- URL App (LB)     : https://app.example.com

- Start: nodemanager -> admin -> managed
- Stop : drain LB -> managed -> admin -> nodemanager

- Logs: DOMAIN_HOME/servers//logs
- Incident stuck: thread dumps x3 + vérifier JDBC + GC
- Rollback: redeploy version N-1 + restart node (si requis)
Sécurité : Realm, SSL/TLS, SSO, durcissement
ModĂšle : users/groups/roles/policies
  • Users/Groups : identitĂ©
  • Roles : agrĂ©gation de permissions (souvent dynamique)
  • Policies : rĂšgles d’accĂšs aux ressources
Objectif : least privilege. Un admin “global” est une dette sĂ©curitĂ©.
Gouvernance recommandée
  • Compte “ops-readonly” (monitoring)
  • Compte “ops-deploy” (deploy/redeploy)
  • Compte “security-admin” (certs, realm)
  • Audit activĂ© + logs centralisĂ©s
TLS : points clés
  • Choisir : terminaison TLS au LB ou end‑to‑end (LB → managed en TLS)
  • Keystore/truststore : rotation planifiĂ©e
  • DĂ©sactiver suites obsolĂštes, forcer TLS 1.2+ (selon politique)
# JVM opts (exemples)
-Dweblogic.security.SSL.minimumProtocolVersion=TLSv1.2
-Dhttps.protocols=TLSv1.2,TLSv1.3
Emplacement image
Capture : configuration keystore / SSL listen port.
SSO : SAML / OIDC (selon intégration)
  • Centraliser l’identitĂ© (IdP) : Azure AD / Okta / Keycloak

  • DĂ©finir les claims/groupes → rĂŽles WebLogic
  • Tester la rĂ©vocation / rotation certificats / clock skew
Hardening (quick wins)
  • Admin derriĂšre VPN/ZTNA, ACL strictes
  • Patch cycle : CPU/PSU planifiĂ© (voir modal patching)
  • DĂ©sactiver services inutiles, samples en prod = NON
  • Secrets hors Git, permissions FS minimales
  • Audit log activĂ© + SIEM si possible
Observabilité : métriques, Prometheus, Grafana
KPIs utiles (prod)
DomaineMesuresAlertes
HTTPRPS, latence p95/p99, 4xx/5xx5xx spikes, p99 > seuil
JVMHeap, GC pauses, threadsGC thrash, OOM risk
JDBCActive/waiting, failurespool exhausted
JMSqueue depth, consumersbacklog growth
Exporter & K8s operator

Sur Kubernetes, l’Operator aide Ă  dĂ©ployer/manager des domains WLS. citeturn0search3turn0search13

Objectif : métriques standardisées pour dashboards + alerting.
Dashboards Grafana : sections suggérées
  • Vue “service” : latences / erreurs / saturation
  • Vue “cluster” : Ă©tat nodes, restarts, readiness
  • Vue “JVM” : heap/GC/threads
  • Vue “JDBC/JMS” : pools + queues
Emplacement image
Placeholder dashboards Grafana WebLogic.
SLO/SLI (simple)
  • SLI : % requĂȘtes rĂ©ussies (2xx/3xx) sur 30j
  • SLO : 99.9% de succĂšs + p95 < 300ms (exemple)
  • Error budget : pilote la frĂ©quence de changements
5.1 Patching & cycle de vie : OPatch, PSU/CPU, rollback
Approche “safe”
  • PrĂ©-prod toujours patchĂ©e avant prod
  • FenĂȘtre de maintenance + runbook + rollback
  • Automatisation (Ansible) + validation (smoke/perf)
OPatch : pattern générique
# 0) Backup ORACLE_HOME + DOMAIN_HOME (ou snapshot)

# 1) Stop servers (managed -> admin)

# 2) OPatch inventory
$ORACLE_HOME/OPatch/opatch lsinventory

# 3) Apply patch
$ORACLE_HOME/OPatch/opatch apply

# 4) Start + validation
# - logs clean
# - smoke tests
# - dashboards OK
Adapter selon les recommandations Oracle et les dépendances (FMW, etc.).
Rollback : plan B
  • PrĂ©parer la commande / procĂ©dure avant de patcher
  • Conserver les artefacts patchs et l’état d’inventaire
  • Tester rollback en prĂ©-prod au moins une fois
Compatibilité / interop

VĂ©rifier les scĂ©narios d’interop entre versions (clients, protocoles). citeturn0search8

5.2 Performance & tuning : JVM, GC, threads, pools
JVM sizing (rĂšgles pragmatiques)
  • Heap trop petit → GC frĂ©quents, latence
  • Heap trop grand → pauses longues, OOM si fragmentation/leak
  • Standardiser les options sur tout le cluster
# Exemples (Ă  adapter)
-Xms4g -Xmx4g
-XX:+UseG1GC
-Xlog:gc*:file=/var/log/weblogic/gc.log:time,uptime,level,tags
GC : lire les logs
  • Suivre p95/p99 des pauses
  • CorrĂ©ler : pics latence HTTP ↔ GC pauses
  • Surveiller allocation rate
Threads : stuck/hogging
  • Thread dumps + identification des verrous (locks)
  • Souvent cause : DB lente, appel externe lent, deadlock app
Méthodologie tuning
  1. Définir SLO (latence/erreurs)
  2. Mesurer baseline
  3. Changer 1 paramĂštre Ă  la fois
  4. Rejouer charge
  5. Documenter décisions
Docker & Kubernetes Operator : domain CRD, secrets, rolling updates
Pourquoi un Operator ?

L’Operator gĂšre le cycle de vie des domains WebLogic sur Kubernetes : dĂ©ploiement, scaling, rolling, etc. citeturn0search3turn0search13

  • Encapsuler WLS + applis dans des images portables
  • DĂ©clarer l’état dĂ©sirĂ© via CRD
  • Automatiser les opĂ©rations day‑2
RepĂšres versions

Le repo Operator publie des releases rĂ©guliĂšres (ex: 4.x). citeturn0search13

Vérifier compatibilité Kubernetes/Operator avant upgrade.
Images : pattern
# 1) Base image WebLogic (selon recommandations Oracle)
# 2) Copier l'app (EAR/WAR) + plan
# 3) Injecter scripts init / config
# 4) Secrets via K8s Secret (pas dans l'image)

# Tag immuable
registry/myweblogic:app-1.2.3-sha4f2c1a7
Emplacement image
Dockerfile / build pipeline / registry.
Domain CRD (trÚs simplifié)
apiVersion: "weblogic.oracle/v9"
kind: Domain
metadata:
  name: prod-domain
spec:
  domainHomeSourceType: Image
  image: registry/myweblogic:app-1.2.3
  replicas: 2
  serverPod:
    env:
      - name: JAVA_OPTIONS
        value: "-Xms4g -Xmx4g"
  adminServer:
    adminService:
      channels:
        - channelName: default
  clusters:
    - clusterName: ClusterA
      replicas: 2
Le vrai YAML est plus riche (secrets, introspector, probes, services, etc.).
Day‑2 Ops : checklist
  • Rolling upgrade : image tag → apply → observe
  • Backups : artefacts + config + secrets rotation
  • ObservabilitĂ© : exporter + dashboards
  • Incident : kubectl logs / describe / events + thread dumps si nĂ©cessaire
6.1 CI/CD : Jenkins pipelines, artefacts, rollback
Pipeline “propre”
  1. Build (Maven/Gradle) → unit tests
  2. Package EAR/WAR → publish artifact
  3. Deploy preprod → smoke + perf quick
  4. Approval → deploy prod (rolling)
  5. Post-deploy validation + dashboards
Jenkinsfile (squelette)
pipeline {
  agent any
  stages {
    stage('Build') {
      steps { sh 'mvn -q -DskipTests=false test package' }
    }
    stage('Publish') {
      steps { sh 'cp target/myapp.ear artifacts/' }
    }
    stage('Deploy Preprod') {
      steps { sh 'wlst.sh wlst/40-deploy.py --env preprod' }
    }
    stage('Smoke') {
      steps { sh 'curl -fsS https://preprod/app/health' }
    }
    stage('Deploy Prod') {
      when { branch 'main' }
      steps { sh 'wlst.sh wlst/40-deploy.py --env prod --rolling' }
    }
  }
}
Tests indispensables
  • Smoke HTTP (health endpoints)
  • Validation JDBC (connectivitĂ©)
  • Sanity JMS (producer/consumer minimal)
  • Temps de rĂ©ponse p95 sous seuil
Rollback (simple & rapide)
# si prod KO post-deploy
1) redeploy artefact N-1
2) rolling restart si besoin
3) post-mortem + blocage du déploiement
6.2 Troubleshooting : playbook incident (stuck threads, OOM, JDBC, JMS)
Lecture logs : ordre conseillé
  1. Access logs (5xx/latences)
  2. Server logs (exceptions)
  3. GC logs (pauses)
  4. DB logs/metrics (latence/sessions)
Thread dumps : méthode
1) Prendre 3 dumps à 10s d’intervalle
2) Chercher : mĂȘmes threads bloquĂ©s ? mĂȘmes locks ? mĂȘmes stacks ?
3) Identifier la dépendance : DB / HTTP externe / lock applicatif
4) Mitigation : drain + restart d’un node si nĂ©cessaire
Heap dumps : quand
  • OOMError
  • Heap monte sans redescendre (leak probable)
  • Analyse avec MAT/YourKit (selon politique)
Cas frĂ©quents → actions
SymptĂŽmeCause probableAction
Stuck threadsDB lente / appel externethread dumps + vérifier pool JDBC
5xx en spikedeploy, config drift, DBrollback + logs + dashboards
Queue JMS grossitconsumer lent/KOscale consumers, vérifier quotas
GC pausesallocation rate/leakGC logs + heap analysis
7.1 Cheat‑sheet WebLogic (commandes & repùres)
Commandes & chemins
# Wizard
$ORACLE_HOME/oracle_common/common/bin/config.sh

# WLST
$ORACLE_HOME/oracle_common/common/bin/wlst.sh

# Domain scripts
$DOMAIN_HOME/bin/startWebLogic.sh
$DOMAIN_HOME/bin/stopWebLogic.sh

# Logs
$DOMAIN_HOME/servers/*/logs

# Node Manager
$WL_HOME/server/bin/startNodeManager.sh
Ports (exemple)
Admin: 7001/7002
Managed: 8001/8002 ...
NodeMgr: 5556
Checklists express
Avant déploiement
  • Artefact immuable + plan env
  • LB drain possible
  • Dashboards prĂȘts
  • Rollback N-1 dispo
AprÚs déploiement
  • Smoke tests OK
  • 5xx stables
  • JDBC pool OK
  • Queues JMS stables
Objectif : MTTR bas → automatisation + observabilitĂ© + runbooks.

Snippets WLST “raccourcis”
# Connexion
connect('weblogic','***','t3s://admin:7002')

# Lister servers
serverConfig(); cd('/Servers'); ls()

# Deploy
deploy(appName='myapp', path='/artifacts/myapp.ear', targets='ClusterA')

# Redeploy
# redeploy('myapp', path='/artifacts/myapp.ear', targets='ClusterA')
Emplacement image
Encart “ports + topologie + flux” en 1 slide (Ă  insĂ©rer).