我目前正在wso2 esb中实现一个自定义任务,它会检查服务器上的某些进程,并在进程未启动时启动它们。但是,如果服务器上的wso2 carbon实例停止,我还需要停止这些进程。 Apache synapse任务接口只有execute方法。 apache synapse或wso2 carbon中是否有接口,它提供启动和停止等方法,或者是否可以将synapse调度程序任务转换为osgi包?
由于
答案 0 :(得分:0)
<强>解决强>
希望这些信息对其他人有用。我的问题的第二部分“是否有可能将一个synapse调度程序任务转换为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启动和停止调用方法。
注意:这里maven bundle插件用于创建bundle,我的工作环境是WSO2 esb version 4.0.2