मेरे दो कदम हैं

<batch:step id="parseXML" next="commitSQL">
        <batch:tasklet>
            <batch:chunk reader="bookListReader" writer="xmlBookListWriter" commit-interval="1"/>
        </batch:tasklet>
    </batch:step>
    <batch:step id="commitSQL">
        <batch:tasklet ref="databaseItemWriter"/>
    </batch:step>

मुझे कोड के साथ कोई समस्या नहीं है, लेकिन चरण commitSQL बिल्कुल भी निष्पादित नहीं कर रहा है, केवल चरण parseXML असीम रूप से चल रहा है।

मेरा पाठक कोड

@Override
public List<Book> read() throws Exception, UnexpectedInputException, ParseException,
        NonTransientResourceException {
    // TODO Auto-generated method stub
    System.out.println("I am reading :) :)");
    List<Book> bookList = new ArrayList<>();
    bookList.add(new Book("Java","Cay","McGrall","1234"));
    bookList.add(new Book("E Java","Cay","McGrall","1234"));
    return bookList;
}

और लेखक कोड

private static void convertBookListToXML(List<? extends Book> books) throws IOException {
List<Book> bookList = getBookList(books);
try {
    System.out.println("I am writer :) :)");
    JAXBContext jaxbContext = JAXBContext.newInstance(Books.class);
    Marshaller xmlMarshaller = jaxbContext.createMarshaller();
    xmlMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

    BufferedWriter writer = new BufferedWriter(new FileWriter(BOOK_FILE));
    xmlMarshaller.marshal(new Books(bookList), writer);
    writer.close();
} catch (JAXBException e) {
    e.printStackTrace();
}
}

parseXML के लिए, लेकिन commitSQL के लिए मेरा कोड बिल्कुल भी निष्पादित नहीं हो रहा है। कोई भी सुझाव कि मैं कैसे parseXML बाहर आऊंगा और commitSQL जारी रखूंगा

0
Suganthan Madhavan Pillai 4 पद 2015, 17:48

2 जवाब

सबसे बढ़िया उत्तर

सभी इनपुट समाप्त हो जाने पर, एक चंक आधारित कदम में, एक कदम को पूरा माना जाता है। यह ItemReader द्वारा अशक्त लौटने का संकेत है। आपके पाठक के मामले में, आप कभी भी अशक्त नहीं होते हैं इसलिए यह हमेशा के लिए चलेगा।

1
Michael Minella 10 पद 2015, 14:52

मुझे लगता है कि पाठक सूची लौटाता है और यह सही है। एक स्प्रिंग-बैच लेखक में एक लेखन विधि होनी चाहिए, और आइटमविटर इंटरफ़ेस के पदानुक्रम में कहीं होना चाहिए। यह प्रश्न में दिए गए कोड नमूने से दिखाई नहीं देता है।

शायद सबसे आसान स्प्रिंग-बैच मैनुअल चैप्टर की जांच करना हो सकता है। 6.7.2 StaxEventItemWriter पर उदाहरण के लिए, इस लेखक के लिए Google के माध्यम से पाए जाने वाले बहुत सारे उदाहरण हैं।

0
horistack 7 पद 2015, 15:01