我有一个 Java 类,每次运行程序时都会将数据写入文件。Java 类是在 Mule 项目中编写的,我想使用 mule 流来调用这个 Java 类。所以我的问题是 - 我如何在 Mule ESB 的 Flow 中调用/启动类的主要方法?整个目标是自动化这个过程。流程还有其他组件,调用 Java 类的 main 方法将成为流程的一部分。
谢谢
我有一个 Java 类,每次运行程序时都会将数据写入文件。Java 类是在 Mule 项目中编写的,我想使用 mule 流来调用这个 Java 类。所以我的问题是 - 我如何在 Mule ESB 的 Flow 中调用/启动类的主要方法?整个目标是自动化这个过程。流程还有其他组件,调用 Java 类的 main 方法将成为流程的一部分。
谢谢
我能想到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>
您可以添加一个 Java 组件并指定要调用的类,记住一件事,如果流程正在处理 bean,那么以 bean 作为参数的方法将像这样调用
public User process(User user) {
//call your main method here
return user;
}
只需使用 Invoke 方法(Mule 包括:https ://docs.mulesoft.com/mule-user-guide/v/3.8/invoke-component-reference )。虽然 Groovy 编写脚本通常不支持 Spring,并且如果您要运行的类是 SpringConnected(带有所有注释等),则您无法通过 Groovy 执行此操作(仅通过使用脚本控制)。
如此简单:<invoke object-ref="DirectoryChecker" method="run" doc:name="Invoke DirectoryChecker"/>
完全足够了。
确保将YouClass
其初始化为 bean。
<spring:bean id="YouClass" name="YouClass" class="you.package"/>
就这样。
检查。它正在工作。