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).
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
<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
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