`
huanghaifeng1990
  • 浏览: 20254 次
文章分类
社区版块
存档分类
最新评论

Java EE 7 Batch

 
阅读更多

今天写了一个关于Java EE 7 Batch 的Demo,该Demo是实现将文件中的用户欠费信息分批处理,最终输出到控制台,部分代码设计如下:

MyItemReader:

@Named

public class MyItemReader extends AbstractItemReader {

private BufferedReader reader;

static int COUNT = 0;

@Override

public void open(Serializable checkpoint) throws Exception {

reader = new BufferedReader(

new InputStreamReader(

this

.getClass()

.getClassLoader()

.getResourceAsStream("/META-INF/mydata.txt")

)

);

}

@Override

public String readItem() {

try {

String s = reader.readLine();

COUNT++;

return s;

} catch (IOException ex) {

Logger.getLogger(MyItemReader.class.getName()).log(Level.SEVERE, null, ex);

}

return null;

}

}

MyItemProcessor:

@Named

public class MyItemProcessor implements ItemProcessor {

@Override

public Message processItem(Object item) throws Exception {

// TODO Auto-generated method stub

StringTokenizer tokens = new StringTokenizer((String)item, ",");

String name = tokens.nextToken();

float money;

money = Float.valueOf(tokens.nextToken());

User user = new User(name,money);

Message m = new Message();

m.setContent("尊敬的" + user.getName()

+ ",您好!您当前欠费:"+ user.getMoney() +" 请尽快交费,以免影响您的正常通话!谢谢!");

return m;

}

}

MyItemWriter:

@Named

public class MyItemWriter extends AbstractItemWriter {

@Override

public void writeItems(List list) {

/* System.out.println("writeItems: " + list);

for (Object person : list) {

em.persist(person);

}*/

System.out.println("通知:");

for (Object m : list) {

System.out.println(((Message)m).getContent());

}

}

}

测试的servlet:

@WebServlet(urlPatterns = {"/TestServlet"})

public class TestServlet extends HttpServlet {

/**

* Processes requests for both HTTP <code>GET</code> and <code>POST</code>

* methods.

*

* @param request servlet request

* @param response servlet response

* @throws ServletException if a servlet-specific error occurs

* @throws IOException if an I/O error occurs

*/

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

try (PrintWriter out = response.getWriter()) {

out.println("<html>");

out.println("<head>");

out.println("<title>CSV-to-Database Chunk Job</title>");

out.println("</head>");

out.println("<body>");

out.println("<h1>CSV-to-Database Chunk Job</h1>");

JobOperator jo = BatchRuntime.getJobOperator();

long jid = jo.start("myJob", new Properties());

out.println("Job submitted: " + jid + "<br>");

out.println("<br><br>Check server.log for output, also look at \"myJob.xml\" for Job XML.");

out.println("</body>");

out.println("</html>");

} catch (JobStartException | JobSecurityException ex) {

Logger.getLogger(TestServlet.class.getName()).log(Level.SEVERE, null, ex);

}

}

........

测试结果:

19:31:27,748 INFO [stdout] (batch-batch - 3) 通知:

19:31:27,748 INFO [stdout] (batch-batch - 3) 尊敬的 User1,您好!您当前欠费:11.0 请尽快交费,以免影响您的正常通话!谢谢!

19:31:27,749 INFO [stdout] (batch-batch - 3) 尊敬的 User2,您好!您当前欠费:21.0 请尽快交费,以免影响您的正常通话!谢谢!

19:31:27,749 INFO [stdout] (batch-batch - 3) 尊敬的 User3,您好!您当前欠费:22.0 请尽快交费,以免影响您的正常通话!谢谢!

19:31:27,749 INFO [stdout] (batch-batch - 3) 尊敬的 User4,您好!您当前欠费:23.0 请尽快交费,以免影响您的正常通话!谢谢!

19:31:27,750 INFO [stdout] (batch-batch - 3) 尊敬的 User5,您好!您当前欠费:24.0 请尽快交费,以免影响您的正常通话!谢谢!

19:31:27,750 INFO [stdout] (batch-batch - 3) 通知:

19:31:27,751 INFO [stdout] (batch-batch - 3) 尊敬的 User6,您好!您当前欠费:25.0 请尽快交费,以免影响您的正常通话!谢谢!

19:31:27,751 INFO [stdout] (batch-batch - 3) 尊敬的 User7,您好!您当前欠费:26.0 请尽快交费,以免影响您的正常通话!谢谢!

19:31:27,751 INFO [stdout] (batch-batch - 3) 尊敬的 User8,您好!您当前欠费:27.0 请尽快交费,以免影响您的正常通话!谢谢!

19:31:27,752 INFO [stdout] (batch-batch - 3) 尊敬的 User9,您好!您当前欠费:28.0 请尽快交费,以免影响您的正常通话!谢谢!

19:31:27,752 INFO [stdout] (batch-batch - 3) 尊敬的 User10,您好!您当前欠费:29.0 请尽快交费,以免影响您的正常通话!谢谢!

分享到:
评论

相关推荐

    java ee7 batch application 分享1

    以下是Java EE 7 Batch Application的一些核心知识点: 1. **Job与Steps**:一个Job可以由多个Steps组成。Job开始后,按照定义的顺序执行Steps,可能包含决策控制来决定流程走向,最后结束Job。 2. **Step类型**:...

    java ee7 batch application 執行結果監測1

    Java EE 7 引入了批量处理(Batch)应用程序的标准,使得开发者能够高效地处理大量数据,例如在数据库导入导出、数据清洗等场景。在本文中,我们将深入探讨如何监控Java EE 7批处理应用的执行结果,尤其是通过程序化...

    Java EE 7 Developer Handbook.pdf

    Java EE 7是Java EE平台的一个重要版本,它在Java EE 6的基础上引入了更多的新特性,比如支持HTML5、WebSocket技术、新的Batch API以及更新的JMS API等。 书籍的版权归属于Packt Publishing出版社,此出版社以出版...

    Java EE 7 tutorial 中的examples代码

    9. **Batch Applications for the Java Platform (JSR 352)**:Java EE 7提供了批量处理的标准,使得开发者能够编写可移植的批量应用程序,处理大量数据。 10. **JSON Processing (JSON-P) and JSON Binding (JSON-...

    Java EE7权威指南

    卷二可能深入讨论了Java EE7的高级特性,例如CDI(Contexts and Dependency Injection)1.1、JPA(Java Persistence API)2.1、JMS(Java Message Service)2.0、Batch Applications for the Java Platform以及Java ...

    Java.EE.7.Essentials

    Java EE 7的新特性包括支持Websocket通信、改进的Batch处理能力、以及通过RESTful服务实现的JSON处理。同时,Java EE 7还提高了对异步处理和多线程编程的支持。 在《Java EE 7 Essentials》中,作者Arun Gupta深入...

    java ee 7 api

    Java EE 7(Java Platform, Enterprise Edition 7)是Java平台的一个版本,专注于为企业级应用程序开发提供一组标准的API和服务。这个平台包含了多种组件模型、服务接口和协议,旨在简化开发、部署和管理大型分布式...

    Java EE 7 API Documentation 官方英文版(html)

    10. **Batch Processing**:Java EE 7包含了JSR 352,定义了一种批处理应用的编程模型,简化了大数据处理任务。 总的来说,Java EE 7 API文档是开发者理解和利用这些技术的重要资源。通过官方的HTML版本,开发者...

    The Java EE 7 tutorial

    Java EE 7引入了JSR 352 Batch Applications for the Java Platform规范,使得开发人员能够更容易地编写批处理作业。这一特性提供了API和框架来处理大量的数据记录,支持复杂的数据转换和加载任务。 #### 2. **...

    Java EE 7 Recipes

    ### Java EE 7 Recipes #### 重要知识点概览 **Java EE 7 Recipes** 这本书为读者提供了全面深入地了解Java Enterprise Edition (Java EE) 7 的机会,该版本在2013年发布,引入了许多新特性,旨在简化企业级应用的...

    Java EE 7 Development with WildFly

    ### Java EE 7 Development with WildFly #### 一、Java EE 7 和 WildFly 概览 在本书《Java EE 7 Development with WildFly》中,作者深入探讨了如何使用WildFly服务器进行Java EE 7应用程序开发。Java EE 7...

    Java-EE-7.zip_JAVA EE_Java EE 7_平台

    Java EE 7作为该平台的一个重要版本,发布于2013年,引入了一系列新特性以提升开发效率和应用性能。 在Java EE 7中,主要包含以下几个关键组件和技术: 1. **Servlet 3.1**:这是用于处理HTTP请求的核心技术,新...

    java ee7 jaee7

    7. **Batch Applications for the Java Platform (JSR 352)**: - 提供了批处理应用的标准API,使得开发和部署批处理作业更加标准化和简化。 总的来说,"jaee7.zip"中的jar包包含的Java EE 7组件提供了构建现代...

    java EE 7 & HTML5 应用开发——构建和部署同时支持桌面和移动设备的动态高性能企业级应用.rar

    首先,Java EE 7(Java Platform, Enterprise Edition 7)是Oracle公司发布的Java服务器端平台版本,它提供了丰富的API和服务器端服务,用于开发分布式、多层的Web应用。Java EE 7的重点在于提高开发效率、简化API,...

    Java EE Schema Resources

    6. **Batch Applications for the Java Platform (JSR 352)** - 首次在Java EE中引入批量处理标准,使得批处理应用的开发变得更加简单和标准化。 7. **EJB 3.2** - 企业JavaBeans的更新版本,简化了EJB的使用,例如...

    Java EE 6 tutorial

    4. **统一的异步处理**:Java EE 6通过JSR 352(Batch Applications for the Java Platform)规范,提供了标准的批处理API,用于处理大规模的后台作业。 5. **改进的EJB**:EJB 3.1在EJB 3.0的基础上进行了进一步...

    Java EE 7 The Big Picture.pdf

    ### Java EE 7:大局观 #### 关于Java EE 7 Java EE 7(Java Platform, Enterprise Edition 7)是Java企业级开发标准的一个重要版本,它在2013年发布。Java EE 7引入了许多新特性,旨在简化企业应用的开发、部署和...

    Java EE 7权威指南卷2

    《Java EE 7权威指南卷2》是一本深入解析Java企业版7(Java EE 7)技术的权威著作。本书是卷2,提供了对Java EE 7平台的全面理解和实践指导,尤其对于那些希望在企业级开发环境中使用Java技术的专业人士而言,这本书...

    Java EE 7.zip

    9. **Batch Applications for the Java Platform (JSR 352)**:Java EE 7引入了批处理规范,为大型数据处理提供了标准的API,简化了批处理应用的开发。 10. **JSON Processing (JSR 353)**:JSON Processing API...

Global site tag (gtag.js) - Google Analytics