`
javababy1
  • 浏览: 1220211 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

一个处理Properties的好东西 jConfig

阅读更多

jConfig提供一组用来管理Properties的API,使用它可以更简便,快捷的处理系统的配置文件。jConfig使用xml文件来保存配置信息,相对于传统的properties文件,编程访问和保存配置信息都十分方便。

在项目中,后台的数据保存在Sun ONE Directory Server上,程序通过jndi访问它。客户要求支持LDAP Server双机,这就需要配置两组属性,分别用来连接两台LDAP Server。使用jConfig,非常简单的实现了这个需求。

首先配置文件放置在系统etc目录下,名字为jndi.xml,内容如下:

<?xml version="1.0" ?>
<properties>
<category name="master">
<property name="java.naming.provider.url" value="ldap://192.168.2.14:389/dc=myentry,dc=china,dc=huawei,dc=com"/>
<property name="java.naming.security.principal" value="cn=Directory Manager"/>
<property name="java.naming.security.credentials" value="Encrypted Password"/>
</category>

<category name="slave">
<property name="java.naming.provider.url" value="ldap://192.168.2.215:389/dc=myentry,dc=china,dc=huawei,dc=com"/>
<property name="java.naming.security.principal" value="cn=Directory Manager"/>
<property name="java.naming.security.credentials" value="Encrypted Password"/>
</category>
</properties>

名字为master的category为主机的上下文信息,slave为备机。

程序JNDIFactory.java用来读取配置信息。注释信息为相关程序的解释。

public class JNDIFactory {
// Returns the one and only instance of the ConfigurationManager.
private static final ConfigurationManager cm = ConfigurationManager
.getInstance();
// A key to specify the name of properties
private static final String PROPERTIES_NAME = "PROPERTIES_NAME";
// Loads all the properties
public List<Properties> loadAllProperties() {
File file = new File("etc/jndi.xml");
XMLFileHandler handler = new XMLFileHandler();
handler.setFile(file);
List<Properties> pros = new ArrayList<Properties>();
try {
// Configuration name
String configurationName = "IPASS.JNDI.CONFIG";
// Loads a configuration with the specific ConfigurationHandler and
// stores it in the internal map with the given name.
cm.load(handler, configurationName);
// Returns the configuration for the specific name
Configuration config = ConfigurationManager
.getConfiguration(configurationName);
// Removes the general Category that I do not need
config.removeCategory("general");
// Returns all the names of the properties for the specific category
String[] names = config.getCategoryNames();
for (String CategoryName : names) {
// Loads properties of the specific category
Properties p = config.getProperties(CategoryName);
// Here are some default values
p.setProperty(PROPERTIES_NAME, CategoryName);
p.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
p.setProperty(Context.OBJECT_FACTORIES,
"com.mi.ldap.ProductLDAPFactory");
p.setProperty(Context.STATE_FACTORIES,
"com.mi.ldap.ProductLDAPFactory");
p.setProperty(Context.SECURITY_AUTHENTICATION, "simple");
decryptPassword(p);
pros.add(p);
}
// config.setProperty("TEST", "Added property");
// System.out.println("trying to save file");
// cm.save(handler, config);
// System.out.println("file successfully saved");
// System.out.println("TEST:" + config.getProperty("TEST"));
} catch (Exception e) {
e.printStackTrace();
}
return pros;
}
/**
* Decrypt this CREDENTIALS
*/
private void decryptPassword(Properties p) {
String pwd = p.getProperty(Context.SECURITY_CREDENTIALS);
// TODO Decrypt this pwd
p.setProperty(Context.SECURITY_CREDENTIALS, pwd);
}}

配置信息的保存也十分方便,Properties的内容更新后,直接执行ConfigurationManager.save(handler, configuration),即可保存到jndi.xml文件中。

下载地址:www.jconfig.org,具体的多种使用方法可以参考下载文件包中的demo.

分享到:
评论

相关推荐

    jconfig.jar.zip

    `jconfig.jar`是一个专门为Java开发者设计的库,它提供了方便的API,允许开发者在不同的操作系统上获取系统级别的配置和参数。由于Java的跨平台特性,`jconfig.jar`能够确保在Windows、Linux、Mac OS等不同操作系统...

    JConfig三种版本(2.2\2.8\2.9)

    与前两个版本不同,JConfig 2.9 只包含了一个jar包,没有提供源码和帮助。这可能意味着这是一个稳定版本,主要面向那些只需要运行时库的开发者,而不关心其内部实现。尽管没有源码,但通常库的API文档会提供足够的...

    jconfig2.8 api.chm

    我自己根据jconfig的帮助文档做的.chm

    jconfig-src-v2.8

    jconfig是一个比较著名的xml解析器,强大的功能和比较方便的特性是我们学校和编程的好助手 文件:jconfig-src-v2.8.tar.tar

    jconfig:简单的JSON配置文件解析器

    这是一个Go包,用于使用JSON解析配置文件。 这真的很简单,没有任何幻想。 除了将要发布的其他一些项目依赖于它之外,我们不必费心地发布它。 安装 go get stathat.com/c/jconfig import ( "stathat....

    jconfig:适用于Java的小型配置库

    // Adds repositorymaven{ url 'https://github.com/aspic/java-builds/raw/master/'}// Enable dependencydependencies { compile 'no.mehl.jconfig:java-config:0.1'}标准用法 // Json propertiesString json ...

    java获得文件夹或者文件的大小,如果要获得磁盘大小用jconfig效率更高.mht

    java获得文件夹或者文件的大小,如果要获得磁盘大小用jconfig效率更高.mht

    jConfig-开源

    该项目的目标是在Java中构建一个配置管理器,该配置管理器可与xml文件,URL或LDAP存储库一起使用以读取配置属性。 MBean / JBoss支持现已可用。

    Android使用的libjpeg库文件

    `libjpeg`是一个广泛使用的开源库,专门用于JPEG编码和解码。本文将详细介绍`libjpeg`库在Android环境下的应用及其核心概念。 一、libjpeg库介绍 `libjpeg`是JPEG(Joint Photographic Experts Group)标准的C语言...

    JConfig:那些懒惰的开发人员的动态配置类创建者!

    只需创建一个接口,使用您希望在配置类中使用的方法扩展 Config 类。 然后用正确的注释来注释你的方法 前任: @DefaultLocation ( location = " config.json " ) // Specifies the default location of the ...

    可以解压jpeg啦!

    6. **工具应用**:虽然标题提到了“工具”,这可能意味着开发了一个工具或应用程序来解压JPEG文件,使用libjpeg库可以构建这样的工具,例如一个命令行程序或者图形界面应用,让用户能够方便地处理JPEG图像。...

    neo4j-for-springdata-master.zip

    1. **配置**:项目可能包含一个`Neo4jConfig`类,用来配置Neo4j的数据源和事务管理器,可能使用`@Configuration`和`@EnableTransactionManagement`等注解。 2. **实体类**:项目应该有至少两个Java类,分别代表节点...

    LibJpeg静态库和四个头文件

    LibJpeg是一个开源的JPEG(Joint Photographic Experts Group)图像编码和解码库,它提供了在C语言环境中处理JPEG格式图像的功能。这个库是许多软件项目的基础,包括图像处理工具和Web服务器,用于读取、修改和保存...

    libjpeg 6b 开源库 VC可编译工程

    标题"libjpeg 6b 开源库 VC可编译工程"指出,这是一个关于libjpeg 6b版本的开源图像处理库,它已经为Visual C++(VC)编译环境进行了适配,可以用于创建、编辑或处理JPEG格式的图像。这个工程包含了编译所需的文件,...

    制台打印所有后台的查询sql的文件org.zip

    解压后,仔细检查`org`目录下的文件,寻找与日志处理相关的类和配置,例如`Log4jConfig.java`或`logging.properties`。 总之,通过调整Log4j的配置并集成到数据库操作中,我们可以实现控制台打印后台执行的所有SQL...

    统一配置文件操作接口INI_XML_JSON_DB_ENDB

    `JConfig.dll`是一个动态链接库(Dynamic Link Library),在Windows环境下,它是实现配置文件操作接口的代码库,开发者可以将其引入项目中调用接口函数。而`JConfig.h`是头文件,包含了接口函数的声明,供编程时...

    opengl头文件函数库,glut.h,glaux.h等

    1. **glut.h**: 这个头文件包含了GLUT(OpenGL Utility Toolkit)库,是一个跨平台的工具包,用于创建和管理窗口,处理用户输入,如键盘和鼠标事件,并提供基本的几何形状绘制功能。例如,`glutInit()`用于初始化...

    web框架搭建.pdf

    这个框架可以帮助开发者快速构建一个基于Java的Web应用程序。 一、框架下载 在开始搭建Web框架之前,我们需要下载相关的框架。包括Struts2、Spring和iBATIS三个框架。 1.1 Struts2框架 Struts2框架是Apache开源...

Global site tag (gtag.js) - Google Analytics