内容概述

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加载外部的文件相关推荐

  1. JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件

    http://www.tuicool.com/articles/M7ZR3y 原文 http://blog.csdn.net/kylinsoong/article/details/12623997 主 ...

  2. ajax如何请求json文件,简单的ajax请求加载外部json文件

    我在学习ajax ....我试图从json文件发出一个基本请求,它与我的index.html位于同一个文件夹中,但由于某种原因它说未定义:(我可以看到错误是可变的人,但我不能赶上为什么它未定义.... ...

  3. Spark动态加载外部资源文件

    Spark动态加载外部资源文件 1.spark-submit --files 动态加载外部资源文件 之前做一个关于Spark的项目时,因项目中需要读取某个静态资源文件,然后在本地IDEA测试一切皆正常 ...

  4. spark-submit --files 动态加载外部资源文件

    在做spark时,有些时候需要加载资源文件,需要在driver或者worker端访问.在client模式下可以使用IO流直接读取,但是在cluster模式下却不能直接读取,需要如下代码: val is ...

  5. flex加载外部swf文件[flex-swf and flash as3 swf],并且互相通讯-加强原来的帖

    第一步:建立加载类[CtmObjLoader],此类可以加载文件类型 [图片文件或swf文件] package { import flash.display.DisplayObject;  impor ...

  6. Flash:关键帧中调用自建的音乐类,进行播放、关闭、循环音乐+按键播放或者关闭外部音乐+循环播放背景音乐+播放按钮音乐+停止+加载外部音乐文件+AS2播放背景音乐

    目录 一.关键帧里面:调用自建的音乐类, 循环播放外部音乐.进行播放.关闭.循环音乐 1.代码:自建音乐类 2.关键帧中创建.播放.暂停背景音乐+按钮音乐 3.文件布置 二.关键帧中:按键播放或者关闭 ...

  7. QLibrary 动态加载外部库文件

    /*转载请注明出处,谢谢*/ 背景:想搭一个软件系统,包含一个主模块,一堆子模块(用于扩展功能).主模块是一个可执行程序,子模块为动态库,可以加载在主模块中. 问题:每添加一个扩展功能就要修改一下主模 ...

  8. java ClassLoader机制和如何加载外部class文件(含代码)

    Java类的生命周期 生命周期有:加载(Loading)-->验证(Verification)-->准备(Preparation)--->解析(Resolution)-->初始 ...

  9. Android之加载外部dex

    转载请标明出处:[顾林海的博客] 想要了解插件化,首先得知道如何加载外部的dex文件,这里的插件APK会存放在主APP的assets目录中,用于模拟服务器下载插件. 第一步:创建主项目和插件项目 先创 ...

最新文章

  1. 没中、美这么大的统一市场,欧盟人工智能发展面临双重挑战
  2. 细数 Windows 平台上的 NoSQL 数据库
  3. 怎么自学python自动化测试-学习自动化测试,如何学习Python语言?
  4. C++ transform 浅析
  5. 『Python × C++』函数传参机制学习以及对比
  6. 取代13英寸版?苹果下半年将推出M2版MacBook Pro 14
  7. 1. Symfony 2 --- 简介
  8. AS打包出现app:transformClassesAndResourcesWithProguardForRelease错误
  9. 机器学习算法-异常值检测(outlier),30 亿个雅虎账户被黑客入侵?
  10. php漫画连载系统,小涴熊漫画连载系统带采集API开源
  11. Base64基本原理及简单应用
  12. 证明:凸多边形裁剪一次最多能够新增一个凸多边形
  13. 今日话题:蜗居在大城市的生活
  14. openvpn部署和迁移
  15. 《软件技术学研会-技术培训》第0章 操作系统安装
  16. 计组 | 寻址范围的概念与数据寄存器的位数
  17. RS485总线灵魂问答,看你知道几个?
  18. 《人本界面》读书笔记
  19. 【GXOI / GZOI2019】【树链剖分】【线段树】旧词
  20. 宣布发布 .NET 7 Release Candidate 1

热门文章

  1. TextureView/SurfaceView/GLSurfaceView/VideoView渲染视频(点播播放器)
  2. Python笔记:网络爬虫之模拟人人网登录及获取数据的过程详解
  3. JSP+ssm计算机毕业设计企业订单网站b2wcu【源码、数据库、LW、部署】
  4. 监控系统zabbix——配置监控远程主机
  5. 【华为OD机试】代表团坐车【2023 B卷|200分】
  6. 孩子叛逆期不想上学怎么办
  7. vim编辑器、用户管理常见命令
  8. 【毕设狗】【单片机毕业设计】基于单片机的超声波测距系统的设计
  9. 【特征选择】基于二元多邻域人工蜂群 (BMNABC) 特征选择问题附matlab代码
  10. 何为IOC?IOC能做什么?