博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件
阅读量:6819 次
发布时间:2019-06-26

本文共 2649 字,大约阅读时间需要 8 分钟。

http://www.tuicool.com/articles/M7ZR3y

内容概述

JBoss7/WildFly设底层框架一大亮点的Module class loading,及每一个相对独立的模块看作一个Module,每个Module都有自己的class loader,Module之间可以相互依赖,如下图:

当JBoss7安装完成后,JBOSS_HOME/modules目录下存在许多目录,每个目录都有一个module.xml文件,代表一个Module,我们也叫他静态Module,同样部署与服务器之上的war,ear也是一个Module,叫做动态Module,详细  。 

在之前的版本的JBoss中,如JBoss 6, JBoss 5, JBoss 4中,我们经常需要这样的操作,在JBOSS_HOME/server/$PROFILE/conf下放置一个文件或一个properties文件,则在部署的war,ear中通过ClassLoader().getResourceAsStream(“文件名”)可以获取文件内容,这是因为之前的版本的JBoss中共享一个class loader,JBOSS_HOME/server/$PROFILE/conf下文件在classpath之下,而在JBoss7/WildFly中没有共享的class loader,我们需要咱们完成加载外部的文件或properties文件呢,本文解决这个问题。

本文内容包括如下:

  • 给出JBoss7/WildFly如何加载外部的文件或properties文件步骤(将文件或properties定义在一个独立的Module中)
  • 一个简单示例(war应用中加载读取外部的文件个properties) 

JBoss7/WildFly如何加载外部的文件或properties文件步骤

1. 创建一个新Module

jboss-as-7/modules/com/yourcompany/configuration/main/module.xml
module.xml内容如下
在jboss-as-7/modules/com/yourcompany/configuration/main目录下防止要加载的文件

2. 在自己module下定义文件jboss-deployment-structure.xml,此文件置于war 的WEB-INF或ear的META-INF下,jboss-deployment-structure.xml内容如下:

3. 在war或ear中通过class loader可以获取定义的文件如下:
InputStream settingsStream = this.getClass().getClassLoader().getResourceAsStream("settings.properties");

一个简单示例

1. 在jboss-as-7/modules/org/jboss/modules/props/main下创建module.xml添加内容如下:

2. 创建test.properties 和 test.conf文件在org/jboss/modules/props/main下,编辑test.properties文件添加内容如下:
key=This is test props
3. 下载14代码(详细参照   )编译生成modules-loadprops.war
git  clone git@github.com:kylinsoong/csdn.git
cd csdn/14mvn clean install
4. 将modules-loadprops.war部署到JBoss7,启动JBoss7后访问 

我们会发现JBoss后台输出如下信息:

22:15:56,049 INFO  [stdout] (http-/127.0.0.1:8080-1) Read test.properties Info: This is test props 22:15:56,050 INFO [stdout] (http-/127.0.0.1:8080-1) Print test.conf Path: file:/home/kylin/work/eap/jboss-eap-6.0/modules/org/jboss/modules/props/main/./test.conf

分析代码我们可以发现WEB-INF下jboss-deployment-structure.xml内容如下:

ModularLoadingProps.java内容如下:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {		InputStream in = ModularLoadingProps.class.getClassLoader().getResourceAsStream("test.properties"); Properties prop = new Properties(); prop.load(in); System.out.println("Read test.properties Info: " + prop.get("key")); URL url = ModularLoadingProps.class.getClassLoader().getResource("test.conf"); System.out.println("Print test.conf Path: " + url); in.close(); }

转载地址:http://yeozl.baihongyu.com/

你可能感兴趣的文章
php md5函数和字符串截取
查看>>
nginx升级OpenSSL
查看>>
C++中Timer的用法
查看>>
报表软件JS开发引用HTML DOM的location和document对象
查看>>
Windows7 Python-3.6 安装PyCrypto(pycrypto 2.6.1)出现错误以及解决方法
查看>>
《Linux学习并不难》Linux常用操作命令(14):grep命令查找文件中符合条件的字符串...
查看>>
MFC界面库BCGControlBar v25.1新版亮点四:网格控件等
查看>>
Linux下定时切割Nginx访问日志并删除指定天数前的日志记录
查看>>
zabbix 监控项目
查看>>
第三周第二节、用户密码管理及usermod、mkpasswd命令
查看>>
跨交换机实现VLAN
查看>>
27个提升效率的iOS开源库推荐
查看>>
Python的"print"函数在“Hello World”之外的延伸
查看>>
计划任务
查看>>
获取无序数组中第n大的数及快速排序算法使用
查看>>
我的友情链接
查看>>
MongoDB复制集原理
查看>>
Java开发(2) - Tomcat配置JNDI数据源
查看>>
Highcharts error #12 问题解决办法
查看>>
数字图像处理的常用概念和方法
查看>>