WebSphere Extended Deployment, Version 6.0.x     Sistemi operativi: AIX, HP-UX, Linux, Solaris, Windows, z/OS

Modello di programmazione a elaborazione intensiva

Le applicazioni a elevata elaborazione che eseguono i lavori intensivi che non si adattano particolarmente al paradigma richiesta/risposta J2EE (Java 2 Platform Enterprise Edition).

Esistono determinate caratteristiche che rendono queste applicazioni non adatte ai modelli di programmazione J2EE tradizionali, ad esempio:
Il modello di programmazione a elaborazione intensiva fornito da WebSphere Extended Deployment fornisce un ambiente che risolve tali necessità. Il modello di programmazione a elaborazione intensiva si basa su due concetti fondamentali:
  1. L'uso dei processi per inoltrare e gestire il lavoro in maniera asincrona
  2. Un'estensione minore al modello di programmazione dei bean asincroni per supportare i lavori che vengono eseguiti per un periodo di tempo elevato

Il concetto di processo è condiviso da tutte le applicazioni a lunga durata ed è già stato descritto. Nelle seguenti sezioni sono riportate informazioni aggiuntive sulle estensioni per il modello di programmazione dei bean asincroni.

Operazioni dei processi a elaborazione intensiva

Come per tutti i processi a lunga durata, i processi a elaborazione intensiva sono divisi in più operazioni. Nel caso di questo tipo di processi, ogni operazione del processo è rappresentata da un'istanza di una classe che implementa l'interfaccia com.ibm.websphere.ci.CIWork. L'interfaccia CIWork estende l'interfaccia di lavoro commonj.Work dal modello di programmazione dei bean asincroni WebSphere e JSR 237. Tali estensioni sono costituite da due metodi che forniscono un modo per inviare le proprietà specifiche dell'operazione del processo specificate nel processo all'oggetto CIWork.

Per ulteriori informazioni, fare riferimento alla documentazione API.

Per ulteriori informazioni sui bean sincroni, fare riferimento alla sezione Utilizzo dei bean asincroni del Centro informazioni di WebSphere Application Server.

Bean del controller

Il bean del controller è un bean di sessione stateless definito nel descrittore di distribuzione dell'applicazione a elaborazione intensiva che consente all'ambiente di esecuzione di controllare i processi per l'applicazione. L'implementazione di questo bean di sessione stateless è fornita da WebSphere. L'unica responsabilità dell'applicazione consiste nell'includere il bean di sessione stateless, mostrato nella seguente definizione, nel descrittore di distribuzione di uno dei relativi moduli dei bean enterprise. È necessario che sia definito un bean del controller per ogni applicazione a elaborazione intensiva. Poiché l'implementazione del bean del controller è fornita nel runtime WebSphere, i distributori dell'applicazione non dovrebbero richiedere la distribuzione dei bean enterprise durante la distribuzione delle applicazioni a elaborazione intensiva.
<session id="nome">
   <ejb-name>CIController</nome_ejb>
   <home>com.ibm.ws.ci.CIControllerHome</home>
   <remote>com.ibm.ws.ci.CIController</remote>
   <ejb-class>com.ibm.ws.ci.CIControllerBean</clase_ejb>
   <session-type>Stateless</session-type>
   <transaction-type>Bean</transaction-type>
   <resource-ref id="WorkManager_ResourceRef">
      <description>
         WorkManager che verrà utilizzato per eseguire i processi.
      
      <res-ref-name>wm/CIWorkManager</nome_risorsa_riferimento>
      <res-type>commonj.work.WorkManager</res-type>
      <res-auth>Container</autorizzazione_risorsa>
      <res-sharing-scope>Shareable</ambito_condivisione_risorsa>
   

Assemblaggio di un'applicazione a elaborazione intensiva

La logica per un'applicazione a elaborazione intensiva (alcuni oggetti CIWork più le classi necessarie per supportare tali oggetti CIWork) viene assemblata in un modulo di bean enterprise in un file EAR (Enterprise Archive) dell'applicazione J2EE. Il descrittore di distribuzione per il modulo di bean enterprise deve contenere la definizione del bean di sessione stateless mostrato in precedenza. Se l'applicazione stessa utilizza altri bean enterprise o altre risorse, le definizioni per tali bean e risorse possono esser visualizzate anche nel descrittore di distribuzione. Gli strumenti di sviluppo J2EE come IBM Rational Application Developer possono essere utilizzati per sviluppare e assemblare le applicazioni a elaborazione intensiva nello stesso modo in cui vengono utilizzati per creare applicazioni J2EE contenenti moduli di bean enterprise e bean asincroni.

Durata di un'applicazione a elaborazione intensiva

Un'applicazione a elaborazione intensiva viene avviata dal server delle applicazioni nello stesso modo in cui vengono utilizzate le altre applicazioni J2EE. Se l'applicazione definisce un qualsiasi bean di avvio, questo verrà eseguito all'avvio del server delle applicazioni. Quando arriva un processo per l'applicazione, l'ambiente di esecuzione a lunga durata (LREE.ear) richiama il bean di sessione stateless CIControllerBean definito nel descrittore di distribuzione del modulo EJB dell'applicazione. Il nome JNDI di questo bean è specificato nell'xJCL per il processo. Per ogni operazione del processo, il CIControllerBean:
  1. Istanzia l'oggetto CIWork dell'applicazione specificato dall'elemento classname dell'xJCL per l'operazione del processo che utilizza il costruttore senza argomenti della classe CIWork.
  2. Richiama il metodo setProperties() dell'oggetto CIWork a cui inviare qualsiasi proprietà definita nell'xJCL per l'operazione del processo.
  3. Ricerca il gestore lavoro che ha definito il descrittore di distribuzione del modulo del bean enterprise e lo utilizza per richiamare in maniera asincrona il metodo run() dell'oggetto CIWork.

Se il processo viene annullato prima della restituzione del metodo run(), allora CIControllerBean richiama il metodo release() dell'oggetto CIWork su un thread separato. Lo sviluppatore dell'applicazione a lunga durata deve inserire la logica nel metodo release() in modo che il metodo run() restituisca un valore rapidamente. Il processo rimarrà in stato annullamento in sospeso fino alla restituzione del metodo run().

Se il processo non viene annullato e il metodo run() restituisce un valore senza emettere un'eccezione, il processo è stato completato correttamente. Se il metodo run() invece restituisce un'eccezione, il processo verrà contrassegnato come esecuzione non riuscita. Una volta che il metodo run() ha restituito un valore (normalmente oppure emettendo un'eccezione), nessuna ulteriore chiamata viene eseguita all'oggetto CIWork e tutti i riferimenti ad esso verranno eliminati.




Related concepts
Sviluppo delle applicazioni a lunga durata

Argomento Concetti    

Termini di utilizzo | Commenti Ultimo aggiornamento: Mar 20, 2006 1:07:14 PM EST
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r0/index.jsp?topic=?topic=/com.ibm.websphere.xd.doc/info/scheduler/cschintensve.html

© Copyright IBM 2005, 2006. Tutti i diritti riservati.
Questo centro informazioni utilizza la tecnologia Eclipse. (http://www.eclipse.org)