50 Domande e risposte alle interviste frequenti a WebSphere

Domande frequenti nei colloqui di lavoro per ruoli in IBM, dal livello entry-level fino a quello più avanzato.

Mi viene spesso chiesto di fornire una lista di domande utilizzate durante i colloqui per posizioni relative a IBM WebSphere Application Server. Eccola qui.

WebSphere è un Application Server (un prodotto Middleware) sviluppato da IBM, che detiene la leadership nel mercato dei middleware.

WebSphere è una suite di prodotti, e questo articolo si concentra esclusivamente su WebSphere Application Server.

Per chi fosse interessato, ecco alcuni dei prodotti che compongono la suite WebSphere:

  • WebSphere Portal
  • WebSphere DataPower
  • WebSphere Cast Iron
  • WebSphere Extreme Scale
  • WebSphere Front Office
  • WebSphere Message Broker
  • WebSphere MQ
  • WebSphere Real Time
  • WebSphere Remote Server
  • WebSphere Virtual Enterprise
  • WebSphere Communities
  • E altro ancora…

Sei pronto a rispondere alle domande?

1. Cosa si intende per Ripplestart?

Ripplestart è il riavvio di un cluster WAS. In pratica, arresta e riavvia le JVM (Java Virtual Machine) una alla volta, garantendo che solo una JVM sia inattiva in un dato momento, e quindi evitando tempi di inattività per le applicazioni.

Ad esempio, in un cluster con 5 JVM, Ripplestart fermerà la JVM1 e la riavvierà prima di passare ad altre JVM del cluster.

2. Cosa faresti se una JVM consumasse il 100% della CPU e della memoria su un server?

Per prima cosa, bisognerebbe identificare quale JVM è responsabile dell’utilizzo elevato di risorse. Dopo averla individuata, si dovrebbe eseguire un thread dump per analizzare la situazione e, come soluzione temporanea, riavviare la JVM per ridurre il carico su CPU e memoria.

3. Cos’è la sincronizzazione dei nodi?

IBM WAS archivia l’intera configurazione in un repository centrale chiamato “Master Repository”. Ogni nodo ha poi il proprio repository locale.

Quando si apportano modifiche a un nodo tramite il Deployment Manager (DMGR), è necessario sincronizzarlo in modo che la configurazione venga trasferita al server del nodo specifico.

La sincronizzazione è sempre unidirezionale, dal repository master al repository locale.

4. Un’applicazione può continuare a funzionare senza problemi se il DMGR non è attivo?

Sì, l’inattività del DMGR non ha impatto sulle applicazioni già in esecuzione. Tuttavia, non sarà possibile apportare modifiche o effettuare nuove distribuzioni tramite DMGR.

5. Come si distribuisce un’applicazione in WebSphere?

Ci sono tre modi principali per distribuire un’applicazione:

  • Distribuzione a caldo: si copia il file dell’applicazione nella directory delle applicazioni. Questa soluzione è adatta ad ambienti non di produzione, ma sconsigliata per la produzione.
  • DMGR: è possibile distribuire un’applicazione tramite la console del DMGR, accedendo alla sezione Applicazioni e selezionando “Nuova applicazione”.
  • Script: si possono sviluppare script wsadmin o task Ant per automatizzare la distribuzione delle applicazioni.

6. Perché una JVM si riavvia automaticamente anche se la chiudo manualmente?

Ci sono due possibili ragioni:

La JVM potrebbe avere il riavvio automatico abilitato, che è l’impostazione predefinita. Questa opzione si trova nella sezione “Politica di monitoraggio” delle impostazioni della JVM.

In alternativa, potrebbe esserci uno script cron che monitora lo stato del processo e lo riavvia se lo trova inattivo.

7. Quali tipi di file si possono distribuire in WebSphere?

Attraverso la console DMGR o tramite script, è possibile distribuire moduli WAR, EAR, JAR o SAR.

8. Cos’è un host virtuale?

Un host virtuale permette a una singola applicazione di essere accessibile tramite più URL (basati su indirizzi IP o FQDN). La configurazione di un host virtuale avviene tramite la console di amministrazione WAS.

Per rendere accessibile un’applicazione a uno specifico URL, è necessario includere tale URL in un host virtuale e associarlo all’applicazione.

9. Come affronteresti un problema di lentezza di un’applicazione segnalato dagli utenti?

La lentezza può avere diverse cause, ed è fondamentale capire se il problema risiede in WebSphere o in altri componenti. Per isolare il problema, si possono controllare i seguenti aspetti:

  • La lentezza riguarda tutti gli utenti o solo alcuni?
  • L’intera applicazione è lenta, o solo una particolare funzionalità?
  • Se si accede direttamente all’URL della JVM (escludendo il web server), la lentezza persiste?

Se la lentezza viene riscontrata nella JVM, si può eseguire un thread dump ed esaminare i log per identificarne la causa. Bisognerebbe anche verificare se ci sono state nuove release e se la lentezza è iniziata subito dopo.

10. Come si effettua un backup della configurazione WAS senza arrestare il DMGR?

Bisogna accedere alla cartella `bin` del profilo DMGR ed eseguire il comando `./backupConfig.sh -nostop`.

11. Qual è la porta WAS predefinita?

La porta predefinita per HTTP è la 9080, mentre per HTTPS è la 9443. Per maggiori dettagli, si consiglia di consultare la documentazione ufficiale sulle porte predefinite.

12. Quali sono le edizioni di WebSphere disponibili?

  • Network Deployment
  • Developers
  • z/OS
  • Hypervisor
  • Express
  • Base
  • Liberty Core

13. Come si genera e si propaga un plugin?

  • Si accede alla console amministrativa WAS.
  • Si va alla sezione Server -> Web Server.
  • Si seleziona il server e si clicca sui pulsanti “Genera” e “Propaga”.

14. Quali sono i problemi più comuni che hai riscontrato?

È sempre meglio essere onesti riguardo alla propria esperienza. Tuttavia, ecco alcuni esempi di problemi comuni:

  • Host virtuale non definito
  • Problemi con la rotazione dei log
  • Errori interni del server
  • Eccezioni di tipo OutOfMemory
  • Lentezza
  • JVM che non si avvia
  • Utilizzo elevato di CPU, memoria o disco

15. Come si verifica la versione installata di WAS?

  • Si accede alla cartella `bin` del profilo.
  • Si esegue il comando `./versionInfo.sh`.

16. Come si fa a capire se una JVM è attiva o meno?

Ci sono vari modi per verificarlo:

  • Se si dispone di strumenti di monitoraggio, controllare lo stato della JVM.
  • Eseguire un comando `ps -ef | grep nomejvm` sul server.
  • Verificare se è possibile accedere all’URL della JVM.
  • Verificare se è possibile effettuare un telnet sull’URL e la porta della JVM.
  • Controllare se la porta JVM è in ascolto sul server.
  • Utilizzare il comando `serverStatus.sh –all` per vedere quali server sono in esecuzione.

Si può scegliere la soluzione più semplice e adatta alle proprie esigenze.

17. Quali sono alcuni dei file di log generati da WebSphere?

  • SystemOut.log
  • SystemError.log
  • native_stdout.log
  • native_stderr.log

18. Come si genera un thread dump?

Ci sono tre metodi principali per generare un thread dump:

  • Tramite la console DMGR: si accede alla sezione Risoluzione dei problemi, si seleziona la JVM e si clicca su “Java core”.
  • Eseguendo il comando `kill -3 PID` della JVM.
  • Utilizzando il comando `wsadmin.sh`, come descritto nella documentazione di IBM.

19. Qual è la differenza tra cluster verticale e orizzontale?

Un cluster verticale ha i suoi membri sullo stesso nodo (server), mentre un cluster orizzontale si estende su più nodi (e quindi server) all’interno di una cella.

20. Cos’è la Garbage Collection?

La Garbage Collection è un processo automatico di gestione della memoria, che libera gli oggetti non più utilizzati dal programma.

21. Come si disabilita la sicurezza in WebSphere?

La sicurezza può essere disabilitata eseguendo il comando `securityoff` tramite `wsadmin.sh`. Il DMGR deve essere riavviato dopo aver disattivato la sicurezza.

22. Come si abilita la Garbage Collection verbosa?

La GC verbosa non è abilitata di default. Per attivarla, si deve:

  • Andare su Server -> Tipi di server -> WebSphere Application Server.
  • Selezionare la JVM -> Definizione del processo -> “Java e gestione dei processi”.
  • Cliccare su “Java Virtual Machine” nelle proprietà aggiuntive e selezionare la casella di controllo per “raccolta dei rifiuti dettagliata”.

23. Come si fa in modo che WebSphere si avvii automaticamente al riavvio del server?

WebSphere genera automaticamente uno script di avvio in `/etc/init.d` che ne garantisce l’avvio automatico. Se per qualche motivo questo script non esistesse, se ne può creare uno e metterlo in `/etc/init.d`, abilitandolo con i seguenti comandi:

chkconfig --add WebSphere #nome dello script
chkconfig WebSphere on

Si consiglia di consultare una guida dettagliata su come avviare automaticamente i servizi all’avvio del server.

24. Come si aumenta la dimensione dell’heap della JVM?

  • Si accede alla console amministrativa.
  • Si va su Server -> Tipi di server -> WebSphere Application Server.
  • Si seleziona la JVM -> Definizione del processo -> Java Virtual Machine.

In questa sezione si può impostare la dimensione iniziale e massima dell’heap.

25. Si può sincronizzare un nodo quando il nodeagent è inattivo?

Assolutamente no. Il nodeagent deve essere attivo affinché la sincronizzazione possa funzionare.

26. Quali sono i comandi per fermare e avviare DMGR, Nodeagent e JVM?

Per fermare:

  • JVM – `stopServer.sh JVMNAME`
  • Nodeagent – `stopNode.sh`
  • DMGR – `stopManager.sh`

Per avviare:

  • JVM – `startServer.sh JVMNAME`
  • Nodeagent – `startNode.sh`
  • DMGR – `startManager.sh`

27. Quali sono le novità introdotte in WAS 8.5.5?

A livello generale:

  • Supporto per Java SE 7
  • Logging HPEL
  • Gestione integrata della salute
  • Profilo Liberty
  • Routing intelligente
  • Clustering dinamico
  • Clustering JDBC 4.1
  • Supporto Web 2.0

Per approfondimenti, si consiglia di consultare la documentazione ufficiale di IBM.

28. Cosa significa “federazione dei nodi”?

Federare un nodo in WebSphere significa aggiungerlo ad una cella. Questa operazione si effettua con il comando `addNode.sh` e può richiedere alcuni minuti a seconda della dimensione del nodo.

29. Cos’è FFDC?

FFDC (First Failure Data Capture) è un sistema che cattura gli eventi e gli errori che si verificano durante l’esecuzione di WebSphere. I dati raccolti da FFDC sono utili per analizzare i problemi e sono spesso richiesti dal supporto IBM.

30. È possibile decodificare una WebSphere keystore XOR?

Sì, si può utilizzare uno strumento online: https://strelitzia.net/wasXORdecoder/wasXORdecoder.html

31. Qual è il linguaggio di scripting predefinito in WebSphere? JACL o Jython?

JACL è il linguaggio di scripting predefinito in WebSphere.

32. Come si applica un fix pack in WebSphere 8.5.x?

Si può utilizzare IBM Installation Manager (IM). Per istruzioni dettagliate, si può consultare la guida all’applicazione dei fix pack di IBM.

33. Quali sono gli ambienti che supporti?

È importante essere onesti e specificare quali ambienti si gestiscono. Alcuni esempi comuni sono:

  • Sviluppo
  • CIT
  • SIT
  • UAT
  • DEMO
  • Pre-produzione
  • Produzione
  • Staging
  • QA

34. Dove è ospitato il tuo web server?

È utile spiegare l’architettura dell’applicazione che si gestisce. In genere, in un ambiente di produzione con accesso a Internet, i web server si trovano in una DMZ, mentre gli application server sono in una rete interna. Ciò implica che il firewall deve consentire le porte necessarie tra web server e application server.

35. Cos’è l’affinità di sessione?

L’affinità di sessione, detta anche session persistence, consente di “legare” una richiesta a una specifica JVM. In altre parole, le richieste successive dello stesso utente vengono indirizzate alla stessa JVM.

36. È possibile distribuire più applicazioni in una singola JVM?

Sì, è possibile, purché la radice di contesto di ciascuna applicazione sia univoca.

37. Quale database usi con WebSphere?

È opportuno indicare quale database si usa effettivamente. Molte organizzazioni utilizzano Oracle, ma WebSphere supporta anche altri database:

  • DB2
  • Oracle Database
  • Microsoft SQL Server
  • Sybase

38. Come si collega il Web Server a WAS?

Ci sono due modi principali:

  • Utilizzo del plug-in: è il metodo raccomandato. Si installa il plug-in WAS sul web server.
  • Utilizzo di ProxyPass: se si usa Apache e non si vuole installare il plug-in, si può usare la direttiva ProxyPass per collegarsi alla JVM.

39. È necessario un Web Server prima di WAS?

Si consiglia di utilizzare un web server supportato prima di WAS per migliorare la sicurezza, le prestazioni e la manutenibilità dell’applicazione.

40. Cos’è una cella?

Una cella è un gruppo logico di nodi, che può contenere uno o più nodi e cluster. La gestione della cella avviene tramite una singola console di amministrazione.

41. Qual è il timeout di sessione predefinito per la console di amministrazione?

Il timeout è di 30 minuti.

42. Cos’è un fix pack?

Un fix pack è un insieme di patch rilasciate da IBM, che possono contenere correzioni di bug, aggiornamenti di sicurezza e miglioramenti delle prestazioni.

43. Quali sono i registri (o repository) supportati in WebSphere?

  • Archivio federato
  • Sistema operativo locale
  • Registro LDAP autonomo
  • Registro personalizzato autonomo

44. Cosa sono le librerie condivise?

Le librerie condivise sono utilizzate per ridurre la duplicazione di file di libreria. Una singola libreria condivisa può essere utilizzata da più applicazioni all’interno di una cella.

45. Cos’è la radice di contesto?

La radice di contesto (context root) deve essere univoca all’interno di una cella per ogni applicazione. È definita nel descrittore di distribuzione dell’applicazione e viene utilizzata per accedervi. Ad esempio, se l’applicazione A ha una radice di contesto chiamata “retail”, l’applicazione sarà accessibile tramite l’URL `https://nomeserver:porta/retail`.

46. Qual è il nome del file di configurazione del plug-in WAS?

Il file di configurazione del plug-in di WebSphere si chiama `plugin-cfg.xml`.

47. Come si modifica la dimensione del pool di thread di WebContainer?

La dimensione del pool di thread di WebContainer si può modificare accedendo alle impostazioni della JVM -> Pool di thread -> WebContainer.

48. È possibile modificare la radice di contesto di un’applicazione già distribuita?

Sì, è possibile. Tramite la console di amministrazione, si può accedere alle impostazioni dell’applicazione e cliccare su “Radice di contesto per i moduli web” per modificarla. Dopo aver apportato la modifica, è necessario riavviare la JVM.

49. Qual è lo script per modificare l’SDK Java utilizzato dal profilo?

Lo script `managesdk.sh` si trova nella cartella `bin` e permette di cambiare l’SDK Java.

50. Cos’è PMT?

PMT (Profile Management Tool) è l’interfaccia grafica (GUI) per la creazione e la gestione dei profili WebSphere.

Spero che queste domande ti aiutino a trovare lavoro come amministratore di WebSphere. Se hai bisogno di aiuto con il tuo curriculum o con la preparazione ai colloqui, dai un’occhiata a questo tutorial.