In questa sezione viene descritto come scrivere un'applicazione batch semplice.
Cenni preliminari
Prima di iniziare questa attività, è necessario impostare l'ambiente.
Motivi e situazioni in cui eseguire questa attività
Questa attività di esempio assume che l'utente utilizzi Rational Application
Developer (RAD). È possibile utilizzare anche altri strumenti di sviluppo.
- Creare un nuovo progetto per l'applicazione enterprise denominatoPostingsSample2.
- Aggiungere un nuovo modulo di progetto Enterprise JavaBeans (EJB). Tale modulo crea un nuovo file EAR e un progetto EJB.
- Aggiungere BATCH_RUNTIME a percorso build Java per il progetto PostingsSample2EJB.
- Si assuma che esista una classe Java, AccountOp, un oggetto Java con due metodi di interfaccia pubblici, creditAccount(..) e debitAccount(..).
Questi metodi vengono richiamati dal bean batch come appropriato. Importare questa classe dall'a rea di lavoro oppure scrivere una classe chiamante batch.
- Creare la classe BatchStep. Il bean batch è un bean di entità
che eredita da una classe di operazione batch astratta. Effettuare le seguenti operazioni per creare l'operazione del processo astratto PostingSample2Step:
- Nel progetto PostingsSample2EJB, creare una classe Java astratta PostingSample2Step che eredita da BatchJobStepInterface.
- Aggiungere BatchJobStepInterface.
- Rendere la classe astratta.
- Creare il bean batch (EJB entità). Queste operazioni descrivono come creare manualmente il bean batch. Il bean batch riutilizza le classi BatchJobStepLocalInterface,
BatchJobStepKey e BatchJobStepLocalHome dal modello di programmazione fornito; tali classi non vengono create di nuovo. Viene generata soltanto l'implementazione del bean batch.
- Nel progetto PostingSample2EJB, creare un nuovo EJB CMP denominato PostingsSample2Data.
- Per la classe dell'interfaccia home locale, selezionare BatchJobStepLocalHomeInterface.
- Per la classe di interfaccia locale, selezionare BatchJobStepLocalInterface.
- Deselezionare l'opzione Utilizza tipo di attributo a singola chiave per la classe delle chiavi.
- Per la classe delle chiavi, selezionare BatchJobStepKey.
- Rimuovere l'ID dell'attributo CMP.
- Nell'attributo CMP, aggiungere i due attributi CMP jobID e stepID della stringa del tipo.
- Aggiungere jobID come nome e java.lang.String come tipo. Selezionare Chiave.
- Allo stesso modo, aggiungere stepID, immettere java.lang.String e renderlo il campo Chiave.
- Selezionare BeanSuperclass. Creare un tipo di corrispondenza PostingStep2.
In questo modo verrà creato il nuovo EJB, ma soltanto la classe del bean EJB verrà visualizzata nei progetti. L'interfaccia locale, l'interfaccia home e la classe delle chiavi vengono richiamati dalle classi fornite dal modello di programmazione.
- Modifica del descrittore di distribuzione. Apportare le seguenti modifiche al file ejb-jar.xml per PostingSample2Data.
- Nella scheda Bean, modificare il nome JNDI predefinito di connessione CMP in jdbc/lree e il tipo di autorizzazione del contenitore in Per_Connection_Factory.
- Nella scheda Assembly, per le transazioni del contenitore, rendere tutti i metodi (*) di PostingsSample2Data come Obbligatori.
- Modificare il nome JNDI nei collegamenti WebSphere inejb/com/ibm/ws/batch/sample/PostingsSample2Data.
- Salvare e chiudere il descrittore di distribuzione. Come in precedenza, aggiungere l'implementazione per l'EJB successivamente.
- Creare il bean di sessione dei processi batch Il processo batch è una sessione che viene dichiarata nel descrittore di distribuzione, ma che non ha classi generate in quanto fanno tutte parte del runtime.
- Dal file ejb-jar xml nella scheda Bean, fare clic su Aggiungi per creare un nuovo EJB di sessione e denominarlo PostingsJob2.
- Modificare il tipo di transazione in Bean.
- Nella classe Bean, l'interfaccia home remota e l'interfaccia remota, immettere le seguenti stringhe:
- Classe bean: com.ibm.ws.batch.BatchJobControllerBean
- Interfaccia remota: com.ibm.ws.batch.BatchJobController
- Interfaccia home remota: com.ibm.ws.batch.BatchJobControllerHome
Non viene generata alcuna nuova classe; ciò perché tutte le classi sono presenti nel runtime. Si sta soltanto dichiarando il bean di sessione del processo nel descrittore di distribuzione.
- Modificare il nome JNDI dei collegamenti WebSphere inejb/com/ibm/ws/batch/PostingsSample2Job
- Aggiungere un riferimento a PostingsSample2Job di tipo riferimento EJB.
- Selezionare il bean PostingsSample2Data e aggiungere il nome ejb/PostingsSample2Data. Selezionare il tipo di riferimento locale.
- Creare il riferimento al Work Manager.
- Nella scheda Riferimenti, sul bean PostingSample2Job, fare clic su Aggiungi.
Selezionare Riferimento risorsa e fare clic su Avanti.
- Name: wm/BatchWorkManager
- Type: Select commonj.work.WorkManager
- Authentication: Container
- Sharing Scope: Shareable
- Modificare il nome JNDI (Java Naming and Directory Interface)
di wm/BatchWorkManger in wm/default.
- Salvare e chiudere il file ejb-jar.xml.
- Creazione del flusso di dati batch di input È possibile avere zero,
1 o n flussi di input e/o di output. In questo esempio, si ha un flusso di input che legge da un file e nessun flusso di output. L'output viene scritto sulla console.
Le classi BDS sono POJO. Per creare il flusso di input, effettuare le seguenti operazioni:
- Creare una nuova classe nel pacchetto com.ibm.ws.batch.sample denominata PostingsSample2InputStream.
- Implementare l'interfaccia BatchDataStream. In questo modo viene creata la nuova classe di flusso PostingSample2Input. È possibile aggiungere le implementazioni successivamente.
- Creare la classe Posting2 per rappresentare un record dal flusso di input.
Questa classe è la rappresentazione degli oggetti di un record nel flusso di input
batch. Essa viene creata durante la lettura di un record dal BDS di input e viene inviata al bean batch. Questa classe è come un bean di dati o cargo che contiene gli attributi e i corrispondenti metodi getter e setter dei campi nel flusso di input.
- Creare una nuova classe denominata Posting2 che implementa l'interfaccia serializzabile. Le implementazioni possono essere aggiunte successivamente.
- Aggiunta delle implementazioni alle classi
- A questo punto aggiungere le implementazioni a PostingSample2DataBean, PostingSample2Step e PostingSample2InputStream come nei file di classe allegati. Questo esempio viene considerato semplice da un punto di vista di elaborazione per evidenziare le operazioni coinvolte nello sviluppo di una nuova applicazione batch. Una volta aggiunte le classi di implementazione, è possibile distribuire il bean EJB.
Operazioni successive
Dalla struttura di navigazione della console di gestione, selezionare Operazioni runtime quindi Gestione dei processi. Verificare che nel pannello sulla destra sia presente una tabella di processi vuota senza alcun messaggio di errore.