当前位置: 首页 > 知识库问答 >
问题:

was Liberty配置文件-使用ClassLoader.getSystemResourceAsStream读取属性

曾飞沉
2023-03-14

我们正在将应用程序从 WAS 6.1 迁移到自由。我们的应用程序使用第三方 jar,通过 InputStream 读取属性文件= 类加载器。在 WAS 6.1 中,我们将服务器类路径设置为 myproperty.properties 的位置。我们尝试了以下方法来在 Liberty 中设置类路径,但没有任何效果

方法1:在jvm.options中设置以下内容(D:\ConfigFiles\DEV\-包含myproperty.properties路径)

-Djava.class.path=D:\\ConfigFiles\\DEV\\

方法 2:在服务器中设置类装入器.xml,

<library id="config">
 <folder dir="${server.config.dir}/config/" includes="*.properties" scanInterval="5s"/>
</library>

<enterpriseApplication id="applicationEAR" location="application.ear" name="application">
 <classloader privateLibraryRef="config"/>
</enterpriseApplication>

请告诉我们是否有其他方法来覆盖/设置Liberty配置文件中的类路径?

共有2个答案

闻人高卓
2023-03-14

如果您的最终目标是加载一个属性文件,那么更直接的方法是使用bootstrap/env/system属性或< code >

(在服务器.xml文件中)

<server>
  <featureManager>
    <feature>jndi-1.0</feature>
    ...
  </featureManager>

  <jndiEntry jndiName="configDir" value="D:\\ConfigFiles\\Dev"/>    
</server>

然后,您可以在应用程序中加载资源,如下所示:

@Resource(lookup = "configDir")
String configDir;

InputStream is = new FileInputStream(configDir + "/myproperty.properties");

或者,如果您总是将配置属性文件放在< code > $ { SERVER . CONFIG . DIR } 下的某个位置,那么您可以在Liberty中使用内置的< code>SERVER_CONFIG_DIR环境变量:

String configDir = System.getenv("SERVER_CONFIG_DIR"); // equivalent to ${server.config.dir} in server.xml
InputStream is = new FileInputStream(configDir + "/myproperty.properties");

关于管理配置的主题,请查看微配置文件配置(例如

胡弘毅
2023-03-14

尝试在jvm中设置此属性。选项(而不是-Djava.class.path=path/to/propertyDir):

-Xbootclasspath/a:path/to/propertyDir

这会将属性目录(包含您的资源文件)的路径附加到JVM的引导类路径中。因为这是一个附加,所以它也应该在Java9中工作(Java9中已经删除了一些相关选项)。

我怀疑-Djava.class.path=…不起作用的原因是JVM从WLP服务器脚本获取类路径,因此系统属性在服务器JVM启动时应用得太晚了。

您还可以将属性文件放在JVM的lib/ext目录中,但我还没有对此进行测试。-Xbootclasspath/a:path方法在Mac上适用-我想它在Windows上也适用。

安迪

 类似资料:
  • 我正在使用Java的发送SMS。我已经加载了log4j jar文件,并将文件放置在正确的位置,但它仍然无法读取它,并得到以下异常: 例外文本:

  • 我有一个spring Boot2应用程序,有两个属性文件: application.properties application-dev.properties 当我在IntellijIdea中使用dev概要文件运行应用程序时,Spring会读取特定于概要文件的文件和默认文件。

  • 我在Scala中使用Spring Boot。我想通过@ConfigurationProperties注释读取带有Scala类型的case类的属性。我已经知道我将无法注释Scala case类,因为Spring Boot不支持基于构造的属性注入。但至少我希望将集合(列表和映射)从配置映射到基于Scala的类型。这样我就可以编写一个配置类: 并编写一个配置文件application.yml如下: 这有

  • 问题 怎样读取普通.ini格式的配置文件? 解决方案 configparser 模块能被用来读取配置文件。例如,假设你有如下的配置文件: ; config.ini ; Sample configuration file [installation] library=%(prefix)s/lib include=%(prefix)s/include bin=%(prefix)s/bin prefi

  • 您可以以如下各种方式加载或保存配置文件: 在 Burp 菜单中,您可以加载或保存所有用户级选项或项目级选项的配置文件。 在 Burp 的各个子工具的配置面板,您可以使用”选项(Options)”按钮来加载或保存该面板的配置。 在启动向导创建或打开项目时,您可以指定要需要载入的项目级的配置文件。 当您从命令行来启动 Burp 时,您可以使用命令行参数来指定要加载的项目级选项中的一个或多个配置文件。

  • 你还有更多的办法吗?我们可以使用vert.x配置模块吗? 除了json之外,有些类型文件需要用conf编写。例如YAML。 请告诉我如何使用Vert.x配置模块来获取信息,以及如何作为JSONObject使用。 谢了!