有啥方法可以将属性文件保留在 WildFly 的耳朵/罐子和模块之外
Posted
技术标签:
【中文标题】有啥方法可以将属性文件保留在 WildFly 的耳朵/罐子和模块之外【英文标题】:Is there any way to keep the properties file external to the ear/jars and module for WildFly有什么方法可以将属性文件保留在 WildFly 的耳朵/罐子和模块之外 【发布时间】:2021-03-20 12:14:36 【问题描述】:我有一个应用程序,它引用了一个 MY_PRODUCT_CONF_DIR/mycustom.properties 文件,该文件有一些键值对,这些键值对需要在我的 WildFly 上部署的 ear、war 或 jars 外部。在 Jboss 6.1.0 的早期版本中。我们以一种棘手的方式做到了。 jboss 6.1.0 有一个 URL 集合,对加载服务器的 CL 可见。
例如(https://repository.jboss.org/org/jboss/jbossas/jboss-as-distribution/6.1.0.Final/,参考jboss-6.1.0.Final-src\main\src\main\java\org\jboss\Main.java)
// Define a Set URLs to have visible to the CL loading the Server
final Set<URL> urls = new HashSet<URL>();
..........
urls.add(new File(MY_ PRODUCT_CONF_DIR)).toURI().toURL()); // I have added the DIR
.........
// Make a ClassLoader to be used in loading the server
final URL[] urlArray = urls.toArray(new URL[]);
final ClassLoader loadingCl = new URLClassLoader(urlArray, tccl);
// Load the server
server = JBossASServer.class.cast(ServerFactory.createServer(DEFAULT_AS_SERVER_IMPL_CLASS_NAME, loadingCl));
在我的代码中,我从 ClassLoader 读取属性文件
URLClassLoader ucl = (URLClassLoader) loader;
url = ucl.findResource(propertiesResource);
final InputStream inputStream = url.openStream();
..........
那么,有没有办法保留这个机制呢?我可以在 ModuleClassLoader 中添加我的 CONFIG_DIR 作为 URLClassLoader 吗?
有没有办法将属性文件保留在 ear/jars 和模块路径之外?
【问题讨论】:
【参考方案1】:您可以将您的属性文件放在一个模块中并以这种方式加载它,而无需为 getResource 或 getInputStream 使用 URLClassLoader。另一种方法是在某些系统属性中指定属性文件的路径,然后执行 Properties.load(Files.newInputStream(myPath))
【讨论】:
以上是关于有啥方法可以将属性文件保留在 WildFly 的耳朵/罐子和模块之外的主要内容,如果未能解决你的问题,请参考以下文章
Primefaces 与 Wildfly 中的 Yasson 有啥关系吗?
有啥方法可以将大约 16GB 的 SAS 文件拆分为 Python 中的多个文件/数据帧?
在 WildFly 中将 JDBC Driver 作为模块安装有啥好处
weka 中的 ClusterMembership 类有啥作用?