我目前正在 wso2 esb 中实现一个自定义任务,它检查服务器上的一些进程并在进程未启动时启动它们。但是,如果服务器上的 wso2 carbon 实例停止,我也需要停止这些进程。Apache synapse 任务接口只有执行方法。apache synapse 或 wso2 carbon 中是否有提供启动和停止等方法的接口,或者是否可以将突触调度程序任务转换为 osgi 包?
谢谢
我目前正在 wso2 esb 中实现一个自定义任务,它检查服务器上的一些进程并在进程未启动时启动它们。但是,如果服务器上的 wso2 carbon 实例停止,我也需要停止这些进程。Apache synapse 任务接口只有执行方法。apache synapse 或 wso2 carbon 中是否有提供启动和停止等方法的接口,或者是否可以将突触调度程序任务转换为 osgi 包?
谢谢
解决了
希望这些信息对其他人有用。我的问题的第二部分“是否可以将突触调度程序任务转换为 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版