【问题标题】: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 执行此操作(只能使用脚本控制)。
如此简单:<invoke object-ref="DirectoryChecker" method="run" doc:name="Invoke DirectoryChecker"/> 完全够用了。
确保YouClass 被初始化为一个bean。
<spring:bean id="YouClass" name="YouClass" class="you.package"/>
就是这样。
已检查。它正在工作。