2017-01-13 4 views
0

Ich habe gerade angefangen zu lernen JSR-352 und machte es durch eine Ansicht Tutorials. Aber ich habe ein Problem mit der Injektion von Batch-Eigenschaften: Der wichtige Teil meines „myJob.xml“ ist diesJBatch: BatchProperty-Injektion auf Wildfly 9

<job id="myJob" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0"> 
<properties> 
    <property name="name" value="MyName"/> 
</properties> 

Mit dem folgenden Code ist es kein Problem ist, die Eigenschaft in einem Batchlet oder Chunk zu erhalten :

@Inject 
JobContext batchContext; 

@Override 
public String process() throws Exception { 
    Thread.sleep(100); 
    String name = batchContext.getProperties().getProperty("name"); 

Aber in verschiedenen Tutorials, die ich auch einen einfacheren Weg, dies zu tun mit

@Inject 
@BatchProperty(name="name") 
String name; 

Aber der Wert des Namen ist immer null finden. Also die Injektion funktioniert nicht. Ist das ein Fehler von mir oder ist das ein Problem mit Wildfly 9.0.1, auf dem ich die Batch-Anwendung bereitgestellt habe?

+0

Versuchen Sie, den Namen in der gleichen Klasse zu injizieren, injizieren Sie den 'JobContext'? –

+0

Ja. Es ist dieselbe Batchlet-Klasse. – Veilchen4ever

+1

Es sollte definitiv funktionieren. Haben Sie in Ihrer Bereitstellung eine 'beans.xml'? –

Antwort

1

Ich beantworte meine eigene Frage - hoffentlich hilft das andere Anfänger mit JBatch.

Ich habe nicht bemerkt, dass ich nur Eigenschaften injizieren kann (mit @Inject @BatchProperty), die in einem "Batchlet" -Tag oder in einem "Chunk" -Tag deklariert sind. Bei Eigenschaften auf Job- oder Stufenebene funktioniert das nicht.

Verwandte Themen