mule / java - 从java类中读取属于jar依赖项的属性文件

时间:2017-07-28 12:09:46

标签: java jar mule properties-file

我的要求是,我创建了一个具有java类的mule应用程序。我不想将其作为硬编码的一些值,所以我试图将其外化。我将这些值保存在mule-app.properties文件中,并使用FileInputStream,如下所示。

String propFileName = "src/main/app/mule-app.properties"
Properties property = new Properties();
property.load(new FileInputStream(propFileName));

但是这个代码需要部署在CloudHub上;它失败的说没有找到文件。我尝试将文件名的路径作为

String propFileName = "target/classes/mule-app.properties"

对于这两种情况,它在本地运行正常但在CloudHub上给出了相同的结果,并且#34;找不到文件"。

可能是什么解决方案?

另一件事是我有一个共同的代码,我们在其中保留与不同环境相关的所有属性。这个常见代码的包装是jar形式。那么,我可以保留我在上面代码中使用的属性并从jar本身读取它。

如果是,那么如何?

3 个答案:

答案 0 :(得分:2)

如果要在cloudhub中部署并外部化属性文件,请更好地使用Cloudhub属性选项卡来外部化值。
参考: - https://docs.mulesoft.com/runtime-manager/deploying-to-cloudhub#properties-tab

在Java类中,您可以使用以下方法选择属性值: - System.getProperty("yourpropertykey") 就像那个简单:)

关于在普通jar应用程序中保存属性文件,您需要使用<context:property-placeholder/>从公共jar应用程序的类路径中获取属性文件,并且可以在宿主应用程序mule flow中使用它

答案 1 :(得分:0)

为实现这一目标,我们可以做一件事。为要获取的每个属性使用表达式组件集变量。

<expression-component doc:name="setVariable"><![CDATA[flowVars.clientId="${poc.clientId}";]]></expression-component>

此流变量可在Java类中访问,无论它保存在何处,即mule-app.properties或cloudhub运行时属性。

在Java类中,使用下面的代码我们可以读取此流变量。

String clientId = eventContext.getMessage().getInvocationProperty("clientId");

答案 2 :(得分:-1)

使用下面应该有效的示例代码。

FileInputStream fi = new FileInputStream(System.getProperty("C:\Users\userName\
      AnypointStudio\workspace\test\src\main\resources\my-app1.propertie");

Properties prop = new Properties();
prop.load(fi)