今天写了一个关于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 EE 7 Batch Application的一些核心知识点: 1. **Job与Steps**:一个Job可以由多个Steps组成。Job开始后,按照定义的顺序执行Steps,可能包含决策控制来决定流程走向,最后结束Job。 2. **Step类型**:...
Java EE 7 引入了批量处理(Batch)应用程序的标准,使得开发者能够高效地处理大量数据,例如在数据库导入导出、数据清洗等场景。在本文中,我们将深入探讨如何监控Java EE 7批处理应用的执行结果,尤其是通过程序化...
Java EE 7是Java EE平台的一个重要版本,它在Java EE 6的基础上引入了更多的新特性,比如支持HTML5、WebSocket技术、新的Batch API以及更新的JMS API等。 书籍的版权归属于Packt Publishing出版社,此出版社以出版...
9. **Batch Applications for the Java Platform (JSR 352)**:Java EE 7提供了批量处理的标准,使得开发者能够编写可移植的批量应用程序,处理大量数据。 10. **JSON Processing (JSON-P) and JSON Binding (JSON-...
卷二可能深入讨论了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的新特性包括支持Websocket通信、改进的Batch处理能力、以及通过RESTful服务实现的JSON处理。同时,Java EE 7还提高了对异步处理和多线程编程的支持。 在《Java EE 7 Essentials》中,作者Arun Gupta深入...
Java EE 7(Java Platform, Enterprise Edition 7)是Java平台的一个版本,专注于为企业级应用程序开发提供一组标准的API和服务。这个平台包含了多种组件模型、服务接口和协议,旨在简化开发、部署和管理大型分布式...
10. **Batch Processing**:Java EE 7包含了JSR 352,定义了一种批处理应用的编程模型,简化了大数据处理任务。 总的来说,Java EE 7 API文档是开发者理解和利用这些技术的重要资源。通过官方的HTML版本,开发者...
Java EE 7引入了JSR 352 Batch Applications for the Java Platform规范,使得开发人员能够更容易地编写批处理作业。这一特性提供了API和框架来处理大量的数据记录,支持复杂的数据转换和加载任务。 #### 2. **...
### Java EE 7 Recipes #### 重要知识点概览 **Java EE 7 Recipes** 这本书为读者提供了全面深入地了解Java Enterprise Edition (Java EE) 7 的机会,该版本在2013年发布,引入了许多新特性,旨在简化企业级应用的...
### 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作为该平台的一个重要版本,发布于2013年,引入了一系列新特性以提升开发效率和应用性能。 在Java EE 7中,主要包含以下几个关键组件和技术: 1. **Servlet 3.1**:这是用于处理HTTP请求的核心技术,新...
7. **Batch Applications for the Java Platform (JSR 352)**: - 提供了批处理应用的标准API,使得开发和部署批处理作业更加标准化和简化。 总的来说,"jaee7.zip"中的jar包包含的Java EE 7组件提供了构建现代...
首先,Java EE 7(Java Platform, Enterprise Edition 7)是Oracle公司发布的Java服务器端平台版本,它提供了丰富的API和服务器端服务,用于开发分布式、多层的Web应用。Java EE 7的重点在于提高开发效率、简化API,...
6. **Batch Applications for the Java Platform (JSR 352)** - 首次在Java EE中引入批量处理标准,使得批处理应用的开发变得更加简单和标准化。 7. **EJB 3.2** - 企业JavaBeans的更新版本,简化了EJB的使用,例如...
4. **统一的异步处理**:Java EE 6通过JSR 352(Batch Applications for the Java Platform)规范,提供了标准的批处理API,用于处理大规模的后台作业。 5. **改进的EJB**:EJB 3.1在EJB 3.0的基础上进行了进一步...
### Java EE 7:大局观 #### 关于Java EE 7 Java EE 7(Java Platform, Enterprise Edition 7)是Java企业级开发标准的一个重要版本,它在2013年发布。Java EE 7引入了许多新特性,旨在简化企业应用的开发、部署和...
《Java EE 7权威指南卷2》是一本深入解析Java企业版7(Java EE 7)技术的权威著作。本书是卷2,提供了对Java EE 7平台的全面理解和实践指导,尤其对于那些希望在企业级开发环境中使用Java技术的专业人士而言,这本书...
9. **Batch Applications for the Java Platform (JSR 352)**:Java EE 7引入了批处理规范,为大型数据处理提供了标准的API,简化了批处理应用的开发。 10. **JSON Processing (JSR 353)**:JSON Processing API...