jboss - 有什么方法可以将属性文件保留在 WildFly 的耳朵/罐子和模块之外
问题描述
我有一个应用程序,它引用了一个 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 吗?
有没有办法将属性文件保留在耳朵/罐子和模块路径之外?
解决方案
您可以将属性文件放在模块中并以这种方式加载它,而无需使用 URLClassLoader 来获取 getResource 或 getInputStream 。另一种方法是在某些系统属性中指定属性文件的路径,然后执行 Properties.load(Files.newInputStream(myPath))
推荐阅读
- c# - 以普通文本格式导出 Excel
- c - 哪些组件使用语言环境变量?
- java - Websphere对象cahce实现不起作用
- php - 使用数组值作为新的多维数组键
- python - 在 SymPy 中从块矩阵构建矩阵
- monaco-editor - 如何向 Monaco 编辑器添加新的语言语法?
- apache-spark - 如何在 spark 1.6.3 中用 java 编写 spark 上下文,以便将文件转换为数据帧。
- java - 如何在 Spring MVC 4 中的 Servlet 中注入依赖项?
- c - Mongo C 客户端因错误而失去连接
- fastlane - 如何在 fastlane 中将内部版本号设置为管道 ID?