Domanda

Sto cercando di creare un lotto usando javax.batch 1.0 con Java SE 7 e GUIDA .

Leggere la documentazione Javaee 7 su JSR-352 Ovviamente configurano il codice da eseguire all'interno di Glassfish e non ho trovato menzione su come eseguirlo fuori.

Ora Il mio problema è sull'interfaccia di JobContext che dovrebbe essere automaticamente iniettata tramite CDI : Come farlo con la Guice?Provare qualcosa come:

@Provides
@Inject
JobContext providesJobContext(Provider<JobContext> provider) {
    return provider.get()
}
.

è concettualmente sbagliato e conduce a Stackoverflowerror (quindi qui sono:>). È davvero necessario?Esempi iniettarlo per raggiungere le proprietà del lavoro.Potrei raggiungerli, forse, attraverso

jobOperator.getParameters(<executionID>)
.

?

Grazie.

Non ho mai usato la saldatura (che, come ho capito, fornirebbe CDI su Java SE) quindi l'unica alternativa sarebbe il lotto di molla.

È stato utile?

Soluzione

spiegazione API

Primo, per chiarire tra "Proprietà del lavoro" e "Parametri di lavoro".

I "Parametri di lavoro" sono le proprietà passate al JobOperator#start(String,Properties) e al JobOperator#restart(long,Properties).

Le "Proprietà del lavoro" Accessibile tramite JobContext#getProperties() sono i figli dei / Job / Properties elemento.

E.G. Questo lavoro ha due proprietà nell'oggetto restituito da: JobContext#getProperties()

<job>
   <properties>
    <property name="initialAmount" value="100" />
    <property name="bonusAmount" value="#{jobParameters['bonusAmount']}?:100;" />
   </properties>
</job>
.

Quindi un parametro di lavoro è solo una possibile fonte di valori per una definizione di proprietà del lavoro.

Per quanto riguarda i parametri di accesso, JobOperator.getParameters(long executionId), questo probabilmente non ti aiuta molto dal momento che il modo più naturale per ottenere l'ID di esecuzione corrente è dallo stesso contesto che hai difficoltà a iniettare.

SE con GUIDA

Sembra che tu ti faccia riferimento all'implementazione di riferimento JSR 352 ( JBatch , incluso in Glassfish).

È vero che non abbiamo dato molto pensato a sé con iniezione di dipendenza da parte della chioma, e non sono abbastanza di un esperto sapere se questo aiuta anche a menzionare.

Con saldatura, in Glassfish utilizziamo effettivamente una tecnica come questa per consentire al rotazione del lotto di popolare i punti di iniezione definiti da batch.

public class BatchProducerBean {
...
@Produces
@Dependent
public JobContext getJobContext() {
    ...
        return JobContextImpl;
    }
}
.

Sarei felice di sapere di più sull'integrazione della Guice con JBatch. Potresti seguire la casa per la fonte del progetto (senza real wiki ancora) su github

Altri suggerimenti

Saldare è l'implementazione di riferimento del JSR-299 che porta CDI in Javaee 6. Questa implementazione di riferimento è inclusa in Glassfish in modo da poterlo utilizzare in modo efficace.

Esempio da Oracle ha trovato qui :

@Named
public class SimpleItemReader
       extends AbstractItemReader {

       @Inject
       private JobContext jobContext; 
       ...
}
.

Citazione:

.

Non ho mai usato weld

Qui l'implementazione non importa perché, implementa la specifica del JSR.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top