注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

清风幻影的博客

Where there is love, I will be there.

 
 
 

日志

 
 
关于我

同是天涯沦落人,相逢何必曾相识. 天生我材必有用,千金散尽还复来. 天若有情天亦老,人间正道是沧桑. 月影西斜人已去, 堤上梅花情依旧, 此情故已成追忆, 美人如玉夜留香

网易考拉推荐

JBoss7怎么加载外部的文件或properties文件  

2013-12-19 13:18:33|  分类: jboss资料 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

http://www.myexception.cn/operating-system/1447690.html

JBoss 系列十四:JBoss7/WildFly怎么加载外部的文件或properties文件

www.MyException.Cn   发布于:2013-10-12 11:54:02   浏览:3次
JBoss7怎么加载外部的文件或properties文件 - 清风幻影 - 清风幻影的博客 0
JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件

内容概述

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(); }
  评论这张
 
阅读(751)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018