【问题标题】:Invoke the main method of a class in Mule在 Mule 中调用一个类的 main 方法
【发布时间】:2016-07-28 21:06:46
【问题描述】:

我有一个 Java 类,每次运行程序时都会将数据写入文件。 Java 类是在 Mule 项目中编写的,我想使用 mule 流来调用这个 Java 类。所以我的问题是 - 我如何在 Mule ESB 的 Flow 中调用/启动类的主要方法?整个目标是自动化这个过程。流程还有其他组件,调用Java类的main方法将成为流程的一部分。

谢谢

【问题讨论】:

    标签: java automation mule invoke main-method


    【解决方案1】:

    您可以添加一个 Java 组件并指定您要调用的类,记住一件事,如果流程正在处理 bean,那么以 bean 作为参数的方法将像这样调用

    public User process(User user) {
        //call your main method here
        return user;
    }
    

    【讨论】:

      【解决方案2】:

      我能想到 2 个选择 --

      (1) 制作一个组件并从那里调用您的任何其他类。或者,如果您可以将现有类修改为 Callable 并实现 onCall 方法并从那里调用您的业务方法。

      <component class="com.test.TestClass" />
      
      public class TestClass implements Callable {
      public Object onCall(MuleEventContext eventContext) throws Exception {
              //call business method from here.
          }
      }
      

      (2) 使用groovy进行java调用。

      <scripting:component>
                  <scripting:script engine="groovy">
                      // Your java code here
                  </scripting:script>
              </scripting:component>
      

      【讨论】:

        【解决方案3】:

        只需使用 Invoke 方法(Mule 包括:https://docs.mulesoft.com/mule-user-guide/v/3.8/invoke-component-reference)。虽然 Groovy 编写脚本通常不支持 Spring,但如果您要运行的类是 SpringConnected(带有所有注释等),您无法通过 Groovy 执行此操作(只能使用脚本控制)。

        如此简单:&lt;invoke object-ref="DirectoryChecker" method="run" doc:name="Invoke DirectoryChecker"/&gt; 完全够用了。

        确保YouClass 被初始化为一个bean。

        <spring:bean id="YouClass" name="YouClass" class="you.package"/>
        

        就是这样。

        已检查。它正在工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-08-08
          • 2013-10-08
          • 1970-01-01
          • 1970-01-01
          • 2020-05-27
          • 1970-01-01
          • 2011-06-05
          • 2012-03-20
          相关资源
          最近更新 更多