2

是否有某种方法可以获取已部署的 mule 应用程序的基本 mule 应用程序名称?

到目前为止,我发现的唯一两个选择是:

muleContext.getConfiguration().getId() //which gives me some not so humanly-readable id of some sort.

muleEvent.getFlowConstruct().getName() //gives me that flow name from where this was called.

每个应用程序在部署时都在他们自己的应用程序目录中,是否无法从 muleContext 中获取这个或其他类似的专有名称?

亲切的问候

4

4 回答 4

6

${app.name}检索应用程序名称的最简单方法是使用spring 占位符将其注入到您的组件中

于 2013-08-19T14:12:51.237 回答
4

这对我有用:

String appName = ((org.mule.module.launcher.MuleApplicationClassLoader)this.getClass().getClassLoader()).getAppName();
于 2015-11-27T13:13:31.153 回答
2

对于Mule 4.x,有预定义的变量,其中之一是在运行时app.name检索应用程序名称。这是 Mulesoft 文档的链接,用于检查所有预定义变量:

https://docs.mulesoft.com/mule-runtime/4.2/dataweave-variables-context

于 2019-11-11T06:32:38.837 回答
0

对于 MuleSoft 4.2.0,您可以使用静态 Java 函数加载应用程序名称:

        ClassLoader cl = Class.forName("full-name-holding-this").getClassLoader();
        Method getArtifactDescriptor = cl.getClass().getMethod("getArtifactDescriptor");
        Object artifactDescriptor = getArtifactDescriptor.invoke(cl);
        Method getName = artifactDescriptor.getClass().getMethod("getName");
        Object appName = getName.invoke(artifactDescriptor);
        return appName.toString();
于 2019-06-28T23:13:05.720 回答