1

我目前正在 wso2 esb 中实现一个自定义任务,它检查服务器上的一些进程并在进程未启动时启动它们。但是,如果服务器上的 wso2 carbon 实例停止,我也需要停止这些进程。Apache synapse 任务接口只有执行方法。apache synapse 或 wso2 carbon 中是否有提供启动和停止等方法的接口,或者是否可以将突触调度程序任务转换为 osgi 包?

谢谢

4

1 回答 1

0

解决了

希望这些信息对其他人有用。我的问题的第二部分“是否可以将突触调度程序任务转换为 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
    }

激活器启动和停止调用方法将分别在服务器启动和停止事件中调用。

注意:这里使用maven bundle插件创建bundle,我的工作环境是WSO2 esb 4.0.2版

于 2012-12-07T13:41:08.330 回答