openplanning

Ví dụ luồng chạy ngầm trong ứng dụng Java Servlet

Xem thêm các chuyên mục:

Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.
Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

1- Ví dụ

Đây là một ví dụ mô phỏng một nhiệm vụ được chạy định kỳ, nó chạy ngầm bên dưới ứng dụng Servlet của bạn. Cụ thể cứ một thời gian nhất định nó lại tạo lại tập tin sitemap.xml, đặt tại thư mục gốc của ứng dụng web.
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();
    }

}

Xem thêm các chuyên mục: