1

Spring 3 TaskScheduler で jar アプリケーションを実行しました。このアプリを main メソッドで実行します。

public static void main(String[] args) {
  GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
  ctx.load("classpath:scheduler-app-context.xml");
  ctx.refresh();
  while (true) {
    // ...
  }
  // ...
}

このjar、Webアプリケーション(warファイル)のメインメソッドを実行していただけますか?これを web.xml で実行する方法。

どうもありがとう

4

2 に答える 2

0

戦争で単純なスケジューラーが必要な場合 (Spring フレームワークを使用)、次のようなこともできます。

(Spring では、"@PostConstruct" がスケジューラを初期化するため、main メソッドは必要ありません)

    @Component
    public class Scheduler {

        private static final Logger LOG = LoggerFactory.getLogger(Scheduler.class);


        @PostConstruct
        private void initializeTenSecSchedule() {

            final List<Runnable> jobs = new ArrayList<Runnable>();

            jobs.add(doSomeTestLogs());
            jobs.add(doSomeTestLogs2());

            final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(jobs.size());

            for(Runnable job : jobs){

                scheduler.scheduleWithFixedDelay(job, 10, 10, SECONDS);

            }

        }

        /**
         * ---------------------some schedule tasks--------------------------
         */

        private Runnable doSomeTestLogs(){

            final Runnable job = new Runnable() {
                public void run() { 

                    LOG.debug("== foo SCHEDULE a", 1);
                    System.out.println("Method executed at every 10 seconds. Current time is :: "+ new Date());

                }
            };

            return job;

        }

        private Runnable doSomeTestLogs2(){

            final Runnable job = new Runnable() {
                public void run() { 

                    LOG.debug("== foo SCHEDULE b", 1);
                    System.out.println("Method executed at every 10 seconds. Current time is :: "+ new Date());

                }
            };

            return job;

        }

    }
于 2013-12-02T10:06:26.637 に答える
0

あなたのでこのようなことをしてくださいweb.xml

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:scheduler-app-context.xml</param-value>
</context-param>

<listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

これにより、Spring コンテキストが XML ファイルからインスタンス化されます。mainしたがって、メソッドのように手動でこれを行う必要はありません。

于 2012-09-07T11:39:01.350 に答える