Запуск фоновой задачи в приложении Java Servlet
View more Tutorials:
Это пример симулирующий задание работающее периодически, на фоне под вашим приложением Servlet. Точнее через определенный период он создает файл sitemap.xml, поставленный в корневой папке веб приложения.

SiteMapGenerator.java
package com.o7planning.example.servlet.listener; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class SiteMapGenerator implements ServletContextListener { private ScheduledExecutorService scheduler; @Override public void contextInitialized(ServletContextEvent event) { scheduler = Executors.newSingleThreadScheduledExecutor(); Runnable command = new SiteMapThread(event.getServletContext()); // Delay 1 Minute to first execution long initialDelay = 1; TimeUnit unit = TimeUnit.MINUTES; // period the period between successive executions long period = 60;// 60 Minute! scheduler.scheduleAtFixedRate(command, initialDelay, period, unit); } @Override public void contextDestroyed(ServletContextEvent event) { scheduler.shutdownNow(); } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>ServletListenerExample</display-name> <listener> <listener-class>com.o7planning.example.servlet.listener.SiteMapGenerator</listener-class> </listener> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
SiteMapThread.java
package com.o7planning.example.servlet.listener; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Date; import javax.servlet.ServletContext; public class SiteMapThread implements Runnable { private ServletContext context; public SiteMapThread(ServletContext context) { this.context = context; } @Override public void run() { System.out.println("Generate sitemap ... " + new Date()); try { this.createFile(); } catch (Exception e) { e.printStackTrace(); } System.out.println("Finish generation"); } private void createFile() throws IOException { System.out.println("Generate file sitemap.xml to: " + context.getRealPath("")); String path = context.getRealPath("sitemap.xml"); File file = new File(path); BufferedWriter writer = new BufferedWriter(new FileWriter(file)); writer.write("<?xml version='1.0' ?>"); writer.write("<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9' " + " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " + " xsi:schemaLocation='http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd'>"); // writer.write("<url>"); writer.write("<loc>http://o7planning.org</loc>"); writer.write("<changefreq>daily</changefreq>"); writer.write("<priority>0.80</priority>"); writer.write("</url>"); // writer.write("<url>"); writer.write("<loc>http://o7planning.org/index.html</loc>"); writer.write("<changefreq>daily</changefreq>"); writer.write("<priority>0.80</priority>"); writer.write("</url>"); // writer.write("</urlset>"); writer.close(); } }