JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件
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内容如下
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.mycompany.configuration">
<resources>
<resource-root path="."/>
</resources>
</module>
在jboss-as-7/modules/com/yourcompany/configuration/main目录下防止要加载的文件
2. 在自己module下定义文件jboss-deployment-structure.xml,此文件置于war 的WEB-INF或ear的META-INF下,jboss-deployment-structure.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="com.mycompany.configuration" />
</dependencies>
</deployment>
</jboss-deployment-structure>
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添加内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.jboss.modules.props">
<resources>
<resource-root path="."/>
</resources>
<dependencies>
</dependencies>
</module>
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/14
mvn clean install
4. 将modules-loadprops.war部署到JBoss7,启动JBoss7后访问 http://localhost:8080/modules-loadprops/ServiceModuleLoaderLoadProps
我们会发现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内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.jboss.modules.props" />
</dependencies>
</deployment>
</jboss-deployment-structure>
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();
}
JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件的更多相关文章
- 浏览器加载外部js 的顺序,以及处理顺序。
问题, 有事候按F12打开 google的调试台后,查看network下面加载过来的资源是, 有些资源的状态处于 pending.. 个人理解: 浏览器是可以同时开启多个http 请求去加载外部的资源 ...
- struts2官方 中文教程 系列十四:主题Theme
介绍 当您使用一个Struts 2标签时,例如 <s:select ..../> 在您的web页面中,Struts 2框架会生成HTML,它会显示外观并控制select控件的布局.样式和 ...
- JVM虚拟机系列(一)类的加载
JAVA虚拟机系列(一) 类的加载 目录 1 类的初始化过程 2 详解初始化时的各个阶段 一.类初始化的过程 先来看一个CLASS文件在整体生命周期里会遇到的阶段: xxxx.class ---> ...
- 【SpringBoot 基础系列】实现一个自定义配置加载器(应用篇)
[SpringBoot 基础系列]实现一个自定义配置加载器(应用篇) Spring 中提供了@Value注解,用来绑定配置,可以实现从配置文件中,读取对应的配置并赋值给成员变量:某些时候,我们的配置可 ...
- linux下/etc/profile /etc/bashrc /root/.bashrc /root/.bash_profile这四个配置文件的加载顺序
目录 一.关于linux配置文件 二.验证四个配置文件的加载顺序 三.结论 一.关于linux配置文件 1.linux下主要有四个配置文件:/etc/profile ./etc/bashrc ./ro ...
- JavaScript学习总结(十九)——使用js加载器动态加载外部Javascript文件
今天在网上找到了一个可以动态加载js文件的js加载器,具体代码如下: JsLoader.js 1 var MiniSite=new Object(); 2 /** 3 * 判断浏览器 4 */ 5 M ...
- Silverlight实用窍门系列:2.Silverlight动态加载外部XML指定地址的WebService---(动态加载外部XML文件中指定的WebService地址)【附带实例源码】
接上节所讲的,Silverlight可以加载外部的XML文件里面的内容,那么我们可不可以在外部XML里面配置一个WebService地址,并且以此加载这个地址来动态加载WebService呢?这样子就 ...
- 精尽MyBatis源码分析 - MyBatis初始化(二)之加载Mapper接口与XML映射文件
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
- FusionCharts简单教程(六)------加载外部Logo
一.加载外部文件Logo 在使用FusionCharts时,我们可能需要在加载图像的时候需要在图表中显示标识.图片等等.这里我们可以使用logoURL属性来实现.如: <chart ...
随机推荐
- log4net 自定义Layout日志字段
最近在使用log4net的时候有一个简单的需求,就是自定义个格式化输出符.这个输出符是专门用来帮我记录下业务ID.业务类型的.比如,“businessID:328593,businessType: o ...
- imcs初探
imcs简介 https://github.com/knizhnik/imcs 翻译过来是在内存上的列存储,在对于一张'静态'的表计算方面很有优势,在许多聚合运算中都有使用线程并行计算,而且其中使用了 ...
- VI常用的命令
vi filename : 打开或者新建一个文件夹,并将光标置于第一行首位 I : 表示光标在当前位置编辑文本 A : 表示光标进入下以恶字符位置编辑文件 X : 每按一次删除光标所在位置的前面一个字 ...
- java中设置代理的两种方式
1 前言 有时候我们的程序中要提供可以使用代理访问网络,代理的方式包括http.https.ftp.socks代理.比如在IE浏览器设置代理. 那我们在我们的java程序中使用代理呢,有如下两种方式. ...
- [django]Django的css、image和js静态文件生产环境配置
前言:在Django中HTML文件如果采用外联的方式引入css,js文件或者image图片,一般采用<link rel="stylesheet" href="../ ...
- 【小白的CFD之旅】03 老蓝
第一次见到老蓝,小白都不太敢相信,对面那不修边幅的糟老头子会是自己要找的导师.嘴里叼着烟,牙都掉了好几颗,穿着还算整齐,这是小白对老蓝的第一印象,这印象并不太好,尤其是在小白发誓认真度过研究生三年时光 ...
- 【WPF系列】基础学习-XAML
引言 WPF框架中已经提到,WPF框架提供XAML基本服务.WPF中XAML的引入向开发者提供UI设计和代码分离的编程型.XAML是WPF中提出的一个具有重要意义的新技术,基本涉及WPF中所有UI开发 ...
- Neutron 理解 (9): OpenStack 是如何实现 Neutron 网络 和 Nova虚机 防火墙的 [How Nova Implements Security Group and How Neutron Implements Virtual Firewall]
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
- spring mvc 快速入门
---------- 转自尚学堂 高淇 --------- Spring MVC 背景介绍 Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC ...
- 图像柔光效果(SoftGlow)的原理及其实现。
图像柔光效果在很多商业软件中都有实现,比如美图秀秀,光影魔术手等.其能针对原始图像产生一副新的比较平滑感觉光线比较柔和的效果,给人一种朦胧美,如下面几幅图所示: ...