【问题标题】:Add a task in WSO2 ESB configuration在 WSO2 ESB 配置中添加任务
【发布时间】:2016-05-19 08:21:41
【问题描述】:

我必须在不通过 ESB 用户界面的情况下在 WSO2 ESB 配置文件中添加一个任务(XML 格式)。我在基于 Java 的应用程序中从外部编写这个 xml,然后我应该将获得的 XML(它以 <task> 标记开头和结尾)插入到我的企业服务总线中。如何以动态方式插入我的任务(添加、修改或删除任务),以便以安全的方式达到此目标?是否有一些 WSO2 API 可以帮助我?

【问题讨论】:

    标签: xml api wso2 task esb


    【解决方案1】:

    您可以使用管理服务:打开 CARBON_HOME/repository/conf/carbon.xml 并将 HideAdminServiceWSDLs 属性设置为 false

    启动 ESB,您现在可以访问管理服务 wsdl。

    你会发现一个名为“TaskAdmin”的服务:https://localhost:8243/services/TaskAdmin?wsdl

    里面有一个叫addTaskDescription的操作,但是我没用过,希望对你有帮助。

    如果您想要管理服务列表,您可以使用 -DosgiConsole 选项启动 Carbon 服务器以转到 osgi 控制台。如果您在控制台中输入帮助,您将获得所有可用的命令。

    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 控制台中编辑任务时,您可以观察到定义已更新:触发器类型从“Cron”更改为“简单”(使用计数=1 和间隔 =0)。重新启动 ESB 时定义会在内存中更改并丢失

    【讨论】:

    • 谢谢你,让-米歇尔。我正在尝试了解如何使用您的建议。我在配置文件中更改了标志的值,但在服务中找不到TaskAdmin,我不知道如何使用它。昨天我看了这个docs.wso2.com/display/ESB481/Writing+Tasks,它似乎是一种在创建纯java类之后添加任务的方法。
    • 编写任务是在java中开发自己的自定义任务的一种方式。我以为您需要在运行时添加新的计划任务?供您参考,我可以在 ESB v4.8.1 中找到 TaskAdmin 如果它可以帮助您,我有一个 javascript 示例,您可以在中介中执行它并为您提供停止/启动计划任务的方法(所以,可能,可以扩展以在中介内创建新的计划任务)
    • 您在哪里找到 TaskAdmin?在主要服务列表中?我找不到它。我需要在 Java 中创建新任务,并将它们添加到 ESB 中。我在上面提到的文档页面中看到,为了将它们发送到 ESB 源配置文件中,xml-format 不是强制性的。我需要创建类(.jar 文件)并将它们添加到确切的文件夹中,但我想知道是否有人已经添加了它们。感谢您的支持,我认为您的 javascript 示例也可能非常有用。
    • 你试过localhost:8243/services/TaskAdmin?wsdl吗?对于 javascript 和管理服务列表,我将更新我的答案...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    相关资源
    最近更新 更多