我必须在WSO2 ESB配置文件中添加任务(XML格式),而不通过ESB用户界面。我在基于Java的应用程序中外部编写了这个xml,然后我应该将获得的XML(它以<task>
标记开头和结尾)插入到我的企业服务总线中。如何以动态方式插入我的任务(添加,修改或删除任务),以便以安全的方式实现这一目标?是否有一些WSO2 API可以帮助我?
答案 0 :(得分:1)
您可以使用管理服务:打开CARBON_HOME / repository / conf / carbon.xml并将HideAdminServiceWSDLs属性设置为false
启动ESB,您现在可以访问管理服务wsdl。
您将找到名为&#34; TaskAdmin&#34;的服务。 :https://localhost:8243/services/TaskAdmin?wsdl
它包含一个名为addTaskDescription的操作,但我从未使用它,希望它能帮到你。
如果您需要管理服务列表,可以使用-DosgiConsole选项启动Carbon服务器以转到osgi控制台。如果在控制台中键入help,您将获得所有可用命令。
listAdminServices命令将列出所有可用的服务。
也许这个示例可以帮助您:这个javascript为您提供了一种从中介内部启动/停止计划任务的方法:
<script language="js">importPackage(Packages.org.apache.synapse);
importPackage(Packages.org.apache.synapse.config);
importPackage(Packages.org.apache.synapse.task);
var sc = mc.getConfiguration();
var task = sc.getStartup("TestTask");
var td = task.getTaskDescription()
td.setCount(0);
//td.setCron(null);
task.setTaskDescription(td);
sc.updateStartup(task);
mc.setConfiguration(sc);
task.destroy();
task.init(mc.getEnvironment());</script>
如果你的任务有一个Cron表达式,td.setCount(0),任务执行停止,并且td.setCount(-1),任务执行重启。
使用td.setCount(1)+ td.setCron(null),在ESB控制台中编辑任务时,您可以观察到该定义已更新:触发类型已从&#39; Cron&#39;到&#39;简单&#39; (count = 1且interval = 0)。内存中的定义已更改,并在重新启动ESB时丢失。