`
keke_wanwei
  • 浏览: 126446 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

自己写的一个SystemConfig,备份下

阅读更多
java 代码
  1. package org.wanwei.test.xmlreader;   
  2.   
  3. import java.io.InputStream;   
  4. import java.util.HashMap;   
  5. import java.util.Iterator;   
  6. import java.util.List;   
  7. import java.util.Map;   
  8. import java.util.Set;   
  9.   
  10. import org.apache.log4j.Logger;   
  11. import org.jdom.Document;   
  12. import org.jdom.Element;   
  13. import org.jdom.input.SAXBuilder;   
  14.   
  15. /**  
  16.  * 读取系统配置文件systemConfig.xml.
     
  17.  * 只支持读取简单的XML配置:
     
  18.  * eg:<assocication>
     
  19.  *                <bj_comp_eff_date>2007-06-20</bj_comp_eff_date>
     
  20.  *       </assocication>
     
  21.  * 不支持带属性的XML读取:
     
  22.  *   <Controler type="1" factoryClass="com.elinksoft.bsp.action.ActionBeanFactory" />  
  23.  * @author wanwei  
  24.  * @since 2007-7-4  
  25.  */  
  26. public class SystemConfig   
  27. {   
  28.     private static final Logger logger = Logger.getLogger(SystemConfig.class);   
  29.   
  30.     private static final String DEFAULT_SPLIT = "/";   
  31.   
  32.     private static final Map cacheMap = new HashMap();   
  33.   
  34.     private static boolean initialize = false;   
  35.     /**  
  36.      * 从systemConfig.xml文件中读取相应配置
     
  37.      * note:第一次读取需要初始化,以后都从缓存中读取.  
  38.      * @param configPath eg:/config/assocication/bj_comp_eff_date  
  39.      * @return String not null or empty  
  40.      * @throws Exception "unmatching configPath" will throw if no matching text found  
  41.      */  
  42.     public static String getConfigTextValue(String configPath) throws Exception   
  43.     {   
  44.         if( !initialize )   
  45.         {   
  46.             initialize();   
  47.         }   
  48.         String value = (String) cacheMap.get(configPath);   
  49.         if( value == null || value.length() == 0 )   
  50.         {   
  51.             getConfigTextValue(configPath, true);   
  52.         }   
  53.         return value;   
  54.     }   
  55.     /**  
  56.      * 从systemConfig.xml文件中读取相应配置  
  57.      * @param configPath eg:/config/assocication/bj_comp_eff_date  
  58.      * @param reinitialize if true ,system will read the xml files again.  
  59.      * @return String not null or empty  
  60.      * @throws Exception Exception "unmatching configPath" will throw if no matching text found  
  61.      */  
  62.     public static final String getConfigTextValue(String configPath, boolean reinitialize)   
  63.             throws Exception   
  64.     {   
  65.         if( reinitialize )   
  66.         {   
  67.             initialize();   
  68.         }   
  69.         String value = (String) cacheMap.get(configPath);   
  70.         if( value == null || value.length() == 0 )   
  71.             throw new Exception("unmatching configPath:" + configPath);   
  72.         return value;   
  73.     }   
  74.        
  75.     /**  
  76.      * read xml files and cache them.  
  77.      * @throws Exception  
  78.      */  
  79.     private static void initialize() throws Exception   
  80.     {   
  81.         SAXBuilder sb = new SAXBuilder();   
  82.         InputStream is = ClassLoader.getSystemResourceAsStream("org/wanwei/test/xmlreader/systemconfig.xml");   
  83.         Document doc = sb.build(is); // 构造文档对象   
  84.         Element root = doc.getRootElement(); // 获取根元素   
  85.         recursiveReadElement(root, "");// 递归读取xml元素   
  86.         initialize = true;   
  87.         // logger the cacheMap.   
  88.         if( logger.isInfoEnabled() )   
  89.             logger.info("initialize system config:\n"+mapToString(cacheMap));   
  90.         //System.out.println(mapToString(cacheMap));   
  91.     }   
  92.   
  93.     private static void recursiveReadElement(Element root, String parentName)   
  94.     {   
  95.         List list = root.getChildren();   
  96.         String text = root.getTextTrim();   
  97.         String url = parentName + DEFAULT_SPLIT + root.getName();   
  98.         if( text != null && text.length() > 0 )   
  99.         {   
  100.             cacheMap.put(url, text);   
  101.         }   
  102.         if( list != null && list.size() >= 0 )   
  103.         {   
  104.             forint i = 0; i < list.size(); i++ )   
  105.             {   
  106.                 if( list.get(i) instanceof Element )   
  107.                 {   
  108.                     recursiveReadElement((Element) list.get(i), url);   
  109.                 }   
  110.             }   
  111.         }   
  112.     }   
  113.   
  114.     private static String mapToString(Map map)   
  115.     {   
  116.         StringBuffer mapBuffer = new StringBuffer();   
  117.         if( map == null || map.isEmpty() )    
  118.             return "";   
  119.         Set KeySet = map.keySet();   
  120.         Iterator iterator = KeySet.iterator();   
  121.         while( iterator.hasNext() )   
  122.         {   
  123.             String key = (String) iterator.next();   
  124.             String value = (String) map.get(key);   
  125.             mapBuffer.append(key + "=" + value);   
  126.             if( iterator.hasNext() )   
  127.                 mapBuffer.append(";\n");   
  128.         }   
  129.         return mapBuffer.toString();   
  130.     }   
  131.   
  132.     public static void main(String[] arg0)   
  133.     {   
  134.         try  
  135.         {   
  136.             System.out.println(SystemConfig.getConfigTextValue("/config/assocication/bj_comp_eff_date"));   
  137.             System.out.println("OK");   
  138.         } catch( Exception e )   
  139.         {   
  140.             e.printStackTrace();   
  141.             System.out.println("ERROR");   
  142.         }   
  143.     }   
  144. }   
分享到:
评论
1 楼 keke_wanwei 2007-08-19  
InputStream is = ClassLoader.getSystemResourceAsStream("org/wanwei/test/xmlreader/systemconfig.xml");    
这名话有问题.
用这个:
SystemConfig.class.getResourceAsStream("/"+SYSTEM_CONFIG_FILE);
这个在WEB-INF\classes\目录下的文件能找到,jboss\conf也能找到.
Thread.currentThread().getContextClassLoader().getResourceAsStream("/systemconfig.xml")
这个也行.前面有没有"/"有区别.
主要就是ClassLoader的问题

相关推荐

    configsystem

    "configsystem"是一个针对Windows XP系统的修复工具,主要用于处理由于注册表损坏导致的系统启动问题。注册表是Windows操作系统的核心组件,存储了系统和应用程序的配置信息,一旦损坏,可能会引发各种启动故障甚至...

    XP系统系统盘Windows/system32/config/System文件丢失或损坏修复

    4. 复制备份文件:如果在同一台计算机上有其他健康的Windows XP系统,可以从该系统的`Windows/system32/config`目录下复制`System`文件,覆盖到问题系统相应位置。注意,在操作前最好先备份原有损坏文件。 5. 使用...

    修复config\system的压缩包

    在这样的情况下,"修复config\system的压缩包"可能包含了一系列用于恢复这些关键文件的备份。压缩包(如RAR格式)是一种常见的文件归档和压缩方式,可以将多个文件打包在一起,方便传输和存储。RAR格式提供了数据...

    c#写的sql Server数据库自动备份程序

    标题“c#写的sql Server数据库自动备份程序”中蕴含的知识点涉及了使用C#语言对SQL Server数据库实施自动备份的操作。描述中提到这个程序是针对xp系统安装的SQL Server 2008版本,并且开发者希望得到同行的反馈与...

    System/Config

    【System/Config】这个主题主要涉及的是Windows XP系统的配置与修复知识。在Windows XP操作系统中,"System"和"Config"这两个词汇通常关联于系统核心文件和配置设置。以下是关于这个主题的详细解释: 1. **系统文件...

    如何修复“Windows/System32/Config/System中文件丢失或损坏”故障

    4. 运行一系列命令,将System等重要注册表文件备份并删除,再从C:/windows/repair目录复制对应文件覆盖到C:/windows/system32/config目录。完成后,输入Exit退出恢复控制台并重启电脑。 **第二步:恢复系统备份** 1...

    Windows服务备份

    3. **服务配置备份**:除了服务的基本信息,还需要保存服务的配置文件,这些文件通常位于 `%SystemRoot%\System32\config` 目录下,如`Software`和`System`注册表项,它们包含了服务的设置。 4. **依赖关系备份**:...

    “Windows\System32\Config\System中文件丢失或损坏”的修复

    当遇到“Windows\System32\Config\System中文件丢失或损坏”这一错误时,通常是由于计算机注册表的问题而导致系统无法正常启动。这不仅会影响用户正常使用计算机,还可能导致数据丢失等问题。因此,及时有效地修复该...

    C#自动备份SqlServer 数据库源码,带配置功能强大 c#数据库备份源码

    首先,要创建一个C#程序进行SQL Server数据库备份,我们需要引入`System.Data.SqlClient`命名空间,这是.NET Framework中用于与SQL Server交互的类库。这个命名空间包含了SqlConnection、SqlCommand等关键类,它们...

    C#定时差异备份数据库

    `dbbak2`可能是一个项目或者文件夹名,里面可能包含了C#代码文件(如`.cs`)、配置文件(如`.config`)或者其他与备份过程相关的资源。为了深入理解这个程序的工作机制,我们需要查看这些源代码文件,找出如何安排...

    windos下的oracle9i使用RMAN增量备份说明文档

    在Oracle 9i环境下,使用Recovery Manager(RMAN)进行数据库备份是一项重要的维护任务,特别是对于需要高效利用存储空间和时间资源的环境而言。本文将详细介绍如何在Windows系统下使用RMAN进行增量备份的具体步骤和...

    dotnet-net写的windows自动下载备份的服务

    标题中的“dotnet-net写的windows自动下载备份的服务”指的是使用.NET框架(通常指的是.NET Core或.NET Framework)开发的一个Windows服务应用,它的主要功能是自动执行数据下载和备份操作。这样的服务在企业环境中...

    IIS 8.5保存配置文件及导入、导出、备份、还原.docx

    在日常的运维工作中,对于IIS配置的管理显得尤为重要,特别是在需要迁移配置到其他服务器或备份现有配置的情况下。本文将详细介绍如何在IIS 8.5中进行配置文件的保存、导入、导出、备份与还原等操作。 #### 二、...

    rsync命令教程 在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项。

    2.1.1在使用rsync传输文件时,需要指定一个源和一个目的,其中一个可能是远程机器的资源信息。例如: #rsync *.c servivcer:src/ 表示将传输当前目录下所有以.c结尾的文件到机器servivcer的src目录下。如果文件已经...

    华为HS8145X6光猫的分区和地区以及jffs2备份mtd-hs8145x6.7z

    这个“mtd-hs8145x6.7z”文件很可能是对HS8145X6光猫关键分区的7-Zip压缩格式备份,7-Zip是一种高效且开源的压缩工具,能够提供高压缩率并支持多种压缩格式。 制作固件是设备维护和升级的一部分,涉及到编译、打包...

    SQL数据备份恢复.rar

    本教程将深入探讨如何使用WPF(Windows Presentation Foundation)开发一个SQL数据备份恢复的应用程序,并解释相关技术细节。 首先,让我们理解标题"SQL数据备份恢复.rar"所涉及的关键概念。SQL数据备份是指将...

    交换机备份tftp服务器

    Cisco是一家知名的网络设备制造商,其提供的TFTP服务器软件允许用户在本地计算机上设置一个TFTP服务器,以便于与Cisco网络设备进行交互,例如备份或恢复设备配置,上传或下载固件。 以下是关于TFTP服务器和如何使用...

    IIS备份、还原工具

    2. **IIS备份**:IIS的备份通常涉及复制 `%windir%\System32\Inetsrv\config` 目录下的所有配置文件,包括 `applicationHost.config` 和其他相关的XML文件。这些文件存储了IIS的所有设置。使用IIS备份工具,可以自动...

    C#数据库定时备份Windows服务源码

    【C#数据库定时备份Windows服务源码】是一个实用的系统工具,它允许系统管理员通过预设的时间安排,定期对数据库进行备份,确保数据的安全性和可恢复性。此项目的核心是利用C#编程语言构建一个Windows服务,该服务...

Global site tag (gtag.js) - Google Analytics