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

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 ee7 batch application 分享1

    java ee7 batch application 執行結果監測1

    java ee7 batch application 執行結果監測1

    Java.EE.7.Essentials

    What’s New in Java EE 7 Chapter 2 : Servlets WebServlet Servlet Filters Event Listeners Asynchronous Support Nonblocking I/O Web Fragments Security Resource Packaging Error ...

    idex-ee-08:IDEx Java EE Batch 08 - 公共存储库

    idex-ee-08 IDEx Java EE Batch 08 - 公共存储库

    batchee-demo:一个简单的Java EE 8 Batch Upload CSV处理器演示

    建造mvn clean package && docker build -t com.nabenik / batchee-demo。跑步泊坞窗rm -f batchee-demo || true && docker run -d -p 8080:8080 -p 4848:4848 --name batchee-demo com.nabenik / batchee-demo

    Spring Recipes A Problem-Solution Approach [英文原版]

    Java EE focused on a few technologies, largely to the detriment of alternative, better solutions. When the Spring framework debuted, few would have agreed that Java EE represented the best-in-breed ...

    详细介绍 jpa 开发文档

    清单1在非Java EE环境使用JPA接口的例子 5 清单2在容器中运行的JPA例子 5 3. Entity Bean 6 3.1定义对Entity中属性变量的访问 6 3.2主键和实体标识(Primary Key and Entity Identity) 8 4. EntityManager 9 4.1配置...

    JPA开发手册Word版

    清单1在非Java EE环境使用JPA接口的例子 5 清单2在容器中运行的JPA例子 5 3. Entity Bean 6 3.1定义对Entity中属性变量的访问 6 3.2主键和实体标识(Primary Key and Entity Identity) 8 4. EntityManager 9 4.1配置...

    JavaEE开发的颠覆者+Spring+Boot实战++完整版

    138 X ∣ Java EE 开发的颠覆者:Spring Boot 实战 第7 章 Spring Boot 的Web 开发 .... ............ 170 7.1 Spring Boot 的Web 开发支持 .... ....... 170 7.2 Thymeleaf 模板引擎 .... ..........................

    JPA开发手册

    清单1在非Java EE环境使用JPA接口的例子 5 清单2在容器中运行的JPA例子 5 3. Entity Bean 6 3.1定义对Entity中属性变量的访问 6 3.2主键和实体标识(Primary Key and Entity Identity) 8 4. EntityManager 9 4.1配置...

    Spring 5 Recipes, 4th Edition

    Other recipes include Spring enterprise solutions for topics such as Spring Java EE integration, Spring Integration, Spring Batch, Spring Remoting, messaging, transactions, and working with big data ...

    Spring Recipes: A Problem-Solution Approach, Second Edition

    * Spring enterprise: Spring Java EE integration, Spring Integration, Spring Batch, jBPM with Spring, Spring Remoting, messaging, transactions, scaling using Terracotta and GridGrain, and more. ...

    Spring Recipes A Problem-Solution Approach, 3rd Edition

    Spring enterprise: Spring Java EE integration, Spring Integration, Spring Batch, Spring Remoting, messaging, transactions, and working with big data and the cloud using Hadoop and MongoDB. Spring web...

    Apress.Spring.5.Recipes.A.Problem-Solution.Approach.4th.Edition

    Other recipes include Spring enterprise solutions for topics such as Spring Java EE integration, Spring Integration, Spring Batch, Spring Remoting, messaging, transactions, and working with big data ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    在当今Java EE 开发中,Spring 框架是当之无愧的王者。而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。 《JavaEE开发的颠覆者: Spring ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    在当今Java EE 开发中,Spring 框架是当之无愧的王者。而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。 《JavaEE开发的颠覆者: Spring ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    在当今Java EE 开发中,Spring 框架是当之无愧的王者。而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。 《JavaEE开发的颠覆者: Spring ...

    spring boot 项目代码,直接启动本人编写的,里面包含PPT下载地址

    VIII ∣ Java EE 开发的颠覆者:Spring Boot 实战 3.7 测试 .... .... ............. 66 第二部分 点睛Spring MVC 4.x 第4 章 Spring MVC 基础 .... .......................... 72 第三部分 实战Spring Boot 第5 章...

    JavaEE开发的颠覆者 Spring Boot实战,多个地址免费下载,

    VIII ∣ Java EE 开发的颠覆者:Spring Boot 实战 3.7 测试 .... .... ............. 66 第二部分 点睛Spring MVC 4.x 第4 章 Spring MVC 基础 .... .......................... 72 第三部分 实战Spring Boot 第5 章...

    spring-boot-reference.pdf

    37.4. Using a Java EE Managed Transaction Manager 37.5. Mixing XA and Non-XA JMS Connections 37.6. Supporting an Alternative Embedded Transaction Manager 38. Hazelcast 39. Quartz Scheduler 40. Spring ...

Global site tag (gtag.js) - Google Analytics