有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

mule/java从java类读取jar依赖项内部的属性文件

这里我的需求是,我创建了一个具有java类的mule应用程序。我不想将其中一些值作为硬编码保存,所以我尝试将其外部化。我在mule应用程序中保留了这些值。属性文件和使用的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上的结果与“未找到文件”相同

解决办法是什么

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

如果是的话,怎么做


共 (2) 个答案

  1. # 1 楼答案

    为了实现这一点,我们可以做一件事。为每个要获取的属性使用expression component set变量

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

    这个流变量在Java类中是可访问的,无论它保存在哪里,例如mule app。属性或cloudhub运行时属性

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

    String clientId = eventContext.getMessage().getInvocationProperty("clientId");
    
  2. # 2 楼答案

    使用下面的示例代码,它应该可以工作

    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)