1

現在、wso2 esb 内にカスタム タスクを実装しています。これは、サーバー上のいくつかのプロセスをチェックし、プロセスが起動していない場合はそれらを開始します。ただし、サーバー上の wso2 carbon インスタンスが停止した場合は、これらのプロセスも停止する必要があります。Apache シナプス タスク インターフェイスには execute メソッドしかありません。Apache シナプスまたは wso2 カーボンには、start や stop などのメソッドを提供するインターフェイスがありますか?それとも、シナプス スケジューラ タスクを osgi バンドルに変換できますか?

ありがとう

4

1 に答える 1

0

解決済み

この情報が他の人に役立つことを願っています。私の質問の 2 番目の部分「シナプス スケジューラ タスクを osgi バンドルに変換することは可能ですか」が本当の質問であり、答えは「はい」です。wso2 では、独自のバンドルを作成して {carbon_server_path}/repository/component/dropins にドロップし、サーバーの起動時にバンドルをインストールできます。だからここに私の実装を示すいくつかのコードスニペットがあります:

タスクの実装

    package com.fga.test.task;

    import org.apache.synapse.task.Task;


    public class ProcessChecker implements Task  {



    @Override
    public void execute() {

          //Check for processes and start them
    }
}

バンドルアクティベーター

    package com.ardic.arcsp.cluster.task;

    import org.osgi.framework.BundleActivator;
    import org.osgi.framework.BundleContext;

    public class Activator implements BundleActivator {


   /**
    * Initializes process list from configuration file
    */
    @Override
    public void start(BundleContext context) throws Exception {
          //Do some initialization


    }

     /**
      * Stops all processes
     */
    @Override
    public void stop(BundleContext context) throws Exception {
           //Get process list from config file and stop them
    }

Activator の start および stop 呼び出しメソッドは、サーバーの start および stop イベントでそれぞれ呼び出されます。

注: ここではバンドルの作成に Maven バンドル プラグインが使用され、私の作業環境は WSO2 esb バージョン 4.0.2 でした。

于 2012-12-07T13:41:08.330 に答える