Thin client Java

Il thin client Java™ è una modalità JavaPlatform, Standard Edition (Java SE) di utilizzo dell'ambiente di runtime di un'installazione Application Client o di un'installazione WebSphere® Application Server. L'ambiente di runtime del thin client Java fornisce il supporto necessario per le applicazioni client Java SE complete per la risoluzione degli oggetti, la sicurezza, RAS (Reliability Availability and Serviceability) e altri servizi. Tuttavia, il thin client Java non supporta un contenitore client che fornisce un accesso semplice a questi servizi.

Il thin client Java è a volte indicato come Java thin application client.

Il thin client Java è progettato per supportare gli utenti che desiderano un ambiente di programmazione delle applicazioni client Java SE completo, per utilizzare il JRE IBM® fornito, senza il sovraccarico della piattaforma Java Platform, Enterprise Edition (Java EE) sulla macchina client.

Il thin client Java non esegue l'inizializzazione dei servizi che l'applicazione client potrebbe richiedere. Ad esempio, l'applicazione client è responsabile dell'inizializzazione del servizio di denominazione, tramite CosNaming o API JNDI.

Il thin client Java non supporta l'utilizzo di nomi logici (nickname) per bean enterprise e risorse locali. Quando un'applicazione client risolve un riferimento per un bean enterprise (utilizzando JNDI (Java Naming and Directory Interface) o CosNaming), l'applicazione deve conoscere l'ubicazione del server dei nomi e il nome completo utilizzato quando il riferimento è stato collegato nello spazio dei nomi. Quando un'applicazione client risolve un riferimento per una risorsa locale, l'applicazione client non può risolvere la risorsa mediante una ricerca JNDI. Invece, l'applicazione client deve creare esplicitamente la connessione alla risorsa utilizzando l'API appropriata; ad esempio, JDBC o JMS (Java Message Service). Se l'ubicazione di un bean enterprise o di una risorsa viene modificata, l'applicazione thin client deve modificare anche il valore inserito nell'istruzione lookup ().

L'ambiente di runtime thin client Java fornisce il supporto per le applicazioni client Java SE per accedere ai bean enterprise remoti e fornisce l'implementazione per vari servizi bean enterprise. Le applicazioni client possono anche utilizzare l'ambiente di runtime del thin client Java per accedere agli oggetti CORBA e ai servizi basati su CORBA.

Il thin client Java utilizza il protocollo RMI - IIOP, che consente all'applicazione client di accedere sia ai riferimenti bean enterprise che ai riferimenti oggetto CORBA. L'utilizzo di questo protocollo consente inoltre all'applicazione client di utilizzare i servizi CORBA supportati. L'utilizzo del protocollo RMI - IIOP insieme all'accesso facilitato dei servizi CORBA consente di sviluppare un'applicazione client che deve accedere sia ai riferimenti bean enterprise che ai riferimenti oggetto CORBA.

Se si sceglie di utilizzare i bean enterprise e i modelli di programmazione CORBA nella stessa applicazione client, è necessario comprendere le differenze tra tali modelli di programmazione per gestire entrambi gli ambienti. Ad esempio, il modello di programmazione CORBA richiede il servizio dei nomi CORBA CosNaming per la risoluzione degli oggetti in uno spazio dei nomi. Il modello di programmazione dei bean enterprise richiede il servizio nomi JNDI. L'applicazione client deve inizializzare e gestire correttamente questi due servizi di denominazione.

Un'altra differenza si applica al modello bean enterprise, per cui l'implementazione JNDI inizializza ORB (Object Request Broker); l'applicazione client ignora la presenza di un ORB. Il modello CORBA, tuttavia, richiede l'applicazione client per inizializzare esplicitamente l'ORB tramite il metodo statico ORB.init() .
Evitare problemi: il modello CORBA non consente la funzionalità di gestione del carico di lavoro (WLM) e il failover del cluster. Utilizzare il modello bean enterprise (con JNDI) per accedere agli oggetti in un ambiente cluster.

Il client applicativo thin Java fornisce un comando batch che è possibile utilizzare per impostare le variabili di ambiente CLASSPATH e JAVA_HOME per abilitare il runtime del client applicativo thin Java.

Evita problemi: quando l'esecuzione avviene in un ambiente che include thin client applicativi Java, i client potrebbero improvvisamente rilevare una situazione in cui le informazioni sulla porta relative ai membri del cluster di destinazione sono diventate obsolete. Questa situazione si verifica più comunemente quando tutti i membri del cluster hanno porte dinamiche e vengono riavviati durante un periodo di tempo in cui non viene inviata alcuna richiesta. Il processo client in questo stato tenterà infine di eseguire l'instradamento all'agent del nodo per ricevere i nuovi dati della porta per i membri del cluster, quindi utilizzerà i nuovi dati della porta per eseguire nuovamente l'instradamento ai membri del cluster.

Se si verificano dei problemi che impediscono al client di comunicare con l'agent del nodo o che impediscono la propagazione dei dati della nuova porta tra i membri del cluster e l'agent del nodo, potrebbero verificarsi degli errori di richiesta sul client. In alcuni casi, questi errori sono temporanei. In altri casi è necessario riavviare uno o più processi per risolvere un errore.

Per aggirare i problemi di instradamento del client che potrebbero verificarsi in questi casi, è possibile configurare porte statiche sui membri del cluster. Con le porte statiche, i dati della porta non cambiano quando un processo client ottiene informazioni sui membri del cluster. Anche se i membri del cluster vengono riavviati o se si verificano problemi di comunicazione o di propagazione dei dati tra i processi, i dati della porta che il client conserva sono ancora validi. Questa elusione non risolve necessariamente i problemi di comunicazione o di propagazione dei dati sottostanti, ma rimuove i sintomi di decisioni di instradamento client impreviste o non uniformi.

Evitare problemi: alcune applicazioni thin - client che utilizzano classi ORB IBM insieme a Oracle JRE possono funzionare in modo non corretto a causa di alcuni problemi di caricamento delle classi. Aggiungere il file com.ibm.ws.orb.jar nella directory dirs approvata. Accertarsi che solo il file com.ibm.ws.orb.jarsi trovi nella directory endorsed-dirs . Tutti gli altri file thin - client - jar devono essere ubicati all'esterno della directory endorsed-dirs . Tipo di errori di eccezione che si verificano quando tutti i file JAR thin client si trovano nella directory endorsed-dirs :
[ERROR] sun/io/MalformedInputException java.lang.NoClassDefFoundError: sun/io/MalformedInputException at com.ibm.rmi.iiop.CDRReader.getTcsCConverter(CDRReader.java:451) at com.ibm.rmi.iiop.CDRReader.readStringOrIndirection(CDRReader.java:532)
...... 
In Java (Oracle and IBM JRE), the default endorsed dirs directory is located in: <JAVA_HOME>\jre\lib\endorsed 
You can change the default of endorsed-dirs by using the parameter: -Djava.endorsed.dirs=<<Path to endorsed dir>>