可以通过cron作业在Web服务器中运行核心java程序

时间:2014-09-29 10:37:36

标签: java webserver cpanel

我编写了一个核心Java程序,它将根据某些标准更新数据库。它只是从表中获取了一些数据并对其进行操作并存储新数据。

我需要每天凌晨3点运行这个程序。

可以通过cron作业在Web服务器中运行核心java程序。

或者只有servlet可以在服务器端运行?我是新手。请帮忙。

3 个答案:

答案 0 :(得分:1)

crontab 0 3 * * * myshell.sh

你的shell运行java -jar myapp.jar

或只是使用内置数据库sheduler

答案 1 :(得分:0)

缺少一些细节,但是:

  1. 如果您只使用Web服务器(tomcat?)为应用程序使用容器,您可以考虑将该应用程序部署为独立的jar,然后使用linux crontab执行它(假设您'重新使用linux)。 usage example 1usage example 2。 我不知道你是否需要它,但是当你用crontab执行任务时,你可以将参数传递给执行的任务。

  2. 如果您决定使用Web服务器,那么您可以编写一个Java代码,用于调度定时任务(您可以使用特定的运行时间来安排它,间隔时间)。当任务执行时,它可以运行操作数据的代码。这个问题有不同的实现(java的TimerTask,quartz等等)。你可以阅读他们here

答案 2 :(得分:0)

Drimity所述,您可以将java程序运行命令放在脚本中并安排脚本。

echo "start"
java YourClass
echo "end"

将java程序的所有输出重定向到日志文件而不是System.out /System.err是一个很好的做法

但是,如果您使用Java EE并在Java EE服务器上,则有更好的方法。服务器将为您安排工作。您只需要一个注释。

import javax.ejb.Schedule;
import javax.ejb.Singleton;


@Singleton
public class ShedulerEjb {


    /**
     * This scheduler method runs at 0200 hours (system time)
     */
    @SuppressWarnings("unused")
    @Schedule(hour="2", minute="0", second="0")
    private void doStuff(){
        //Do your stuff
    }   
   }

它下面使用操作系统的计时器服务。

PS:如果你没有制作你的bean singleton并且在预定的时间,你的EJB bean有多个实例(比如n),那么将执行调度的方法{ {1}}次。