问题描述
Websphere 9.0 版安装在我们的 RHEL 8.3 操作系统中。 现在我已经部署了一个 web 应用程序 - .war 文件,其中包含多个模块 - webservice、web 模块等。 这场战争已成功部署,我也可以在 Websphere Enterprise Applications - AppName - START 中启动它。 应用开始时显示成功消息。
现在问题就来了。我们的应用程序需要某个文件 bootstrap.properties
。
这个文件有几个配置,比如 jdbc 参数、jmx 端口、jms 配置、jvm 参数、日志路径等。
一旦这个应用的网络模块在 <SERVER_IP>:9080/Context
url 上运行,它就会在 GUI 上抛出错误,说 Unable to locate bootstrap.properties
。
private static Properties config;
private static final String CONfig_ROOT = System.getProperty("bootstrap.system.propertiespath");
private static final String configFile = "bootstrap.properties";
private JMXConfig() {
}
public static String getConfigRoot() {
if (CONfig_ROOT == null) {
System.err.println("Not able to locate bootstrap.properties. Please configure bootstrap.system.propertiespath property.");
throw new ConfigException("Unable to locate bootstrap.properties.");
} else {
return CONfig_ROOT + File.separator;
}
}
我想知道我们可以在 websphere 控制台中的何处指定绝对路径,在加载应用程序后,我们的属性文件可以作为系统参数读取。
解决方法
由于您使用 System.getProperty() 读取属性,因此需要将其指定为传递给 JVM 的 Java 系统属性。您可以从 JVM 配置面板执行此操作,将其添加为 JVM 上的自定义属性或服务器的通用 JVM 参数中的 -D 选项。
自定义属性:https://www.ibm.com/docs/en/was/9.0.5?topic=jvm-java-virtual-machine-custom-properties
通用 JVM 参数:https://www.ibm.com/docs/en/was/9.0.5?topic=jvm-java-virtual-machine-settings(搜索“通用 JVM 参数”)
请注意,如果您使用自定义属性,您只需将“名称”字段设置为“bootstrap.system.propertiespath”,并将“值”设置为您需要的路径;如果您使用通用 JVM 参数,则需要添加结构为“-Dbootstrap.system.propertiespath=/path/to/file”的参数。