Using Java DB for xml configurator persistence
来源:互联网 发布:linux 网络io监控 编辑:程序博客网 时间:2024/06/08 05:45
应用通常以xml格式来存取配置信息。比较常见的方式是将不同方面的设定内容存为不同的xml文件,比如应用JSample有2个设定文件:security.xml跟connection.xml。这种存取方式在某些情况下可能不符合应用的要求,比如应用不希望暴露配置的原始xml内容,规定用户必需经应用提供的界面来访文配置内容。当然,要防止用户直接访问原始xml,可以用加密xml文件的方式,让用户无法直接看到xml文件的内容。不过JavaDB出现以后,我们或许可以多一种选择,即用JavaDB作为配置信息的存取媒介。JavaDB可以嵌入应用中运行,非常适合于应用缓存并管理一些复杂的信息。
使用JavaDB来存取应用的设定信息,可以有2种方式。第1种是放弃原有的xml schema,重新以关系的角度来定义sql schema。比如应用JSample的设定文件security.xml,原来有如下内容:
<user id="admin" password="admin" role="admin" />
<user id="userA" password="password" role="user" />
</security>
若要映射为sql schema,可以定义如下结构的表
ID varchr2(20),
PASSWORD VARCHAR(20),
ROLE VARCHAR(10)
);
可能熟悉数据库应用的开发人员会比较喜欢这种方式,由此可以抛开烦人的xml,用熟悉的sql来定义配置信息了:-)。不过个人觉得这种方式往往使问题趋于复杂,且不够灵活,因此推荐第2种方式,即使用JavaDB来存取xml内容。这样即获得了JavaDB的存取便利及安全性,又保留了xml原有的schema及xml本身具有的灵活性跟扩展性。在这种方式下,我们只需要有一个table:
其中栏位content的DATATYPE为CLOB,CLOB的上限为2GB,对于普通xml已足够。这里设为500 KB。
xml内容便以DATATYPE CLOB 放在content栏位内,以栏位id为存取index。
资料初始化的 Source Code Sample:
int fileLength = (int) file.length();
java.io.InputStream fin = new java.io.FileInputStream(file);
PreparedStatement ps = conn.prepareStatement("INSERT INTO CONFIGURATORS VALUES (?, ?)");
ps.setString(1, "security");
ps.setCharacterStream(2, new InputStreamReader(fin), fileLength);
ps.execute();
资料读取的Source Code Sample:
while (rs.next()) ...{
StringBuffer content = new StringBuffer();
java.sql.Clob aclob = rs.getClob(1);
java.io.Reader reader = aclob.getCharacterStream();
int chr = reader.read();
while(chr > 0)...{
content.append((char)chr);
chr = reader.read();
}
//or another way...
java.io.Reader aReader = rs.getCharacterStream(1);
int c = aReader.read();
while (c > 0) ...{
content.append((char)c);
c = aReader.read();
}
}
--END
- Using Java DB for xml configurator persistence
- Using Apple Configurator For Automated Enrollment(from http://krypted.com)
- Java Persistence for Relational Databases
- Berkeley DB for Java
- persistence.xml
- Persistence.xml
- persistence.xml
- Sample Application using JSF, Spring 2.0, and Java Persistence APIs
- Intro-Using Java with Oracle db(notes)
- Configurator
- Java for Web学习笔记(四八):WebSocket(5)encoder,decoder和configurator
- Using SQLCipher to encrypt sqlite db (for iOS)
- Using Oracle XML DB Repository as a Filesystem
- Simple Persistence for Java 的零配置对象持久性
- Java Code Examples for javax.persistence.criteria.CriteriaBuilder
- persistence.xml schema 参考
- Persistence.xml 配置说明
- JPA persistence.xml
- 李开复谈工作:不要成为“紧急”的奴隶
- [ASP.NET 优化] IIS6 Gziphttp://www.rainsts.net/article.asp?id=531
- 那一刻我发现这个景观真是太美了!!!
- 把字符换成&#编码。。。
- 人生观--乐观主义
- Using Java DB for xml configurator persistence
- JAVASCRIPT一些资料!
- 安装PostgreSQL出现“Invalid username specified:登录失败:未知的用户名和错误密码。”和“The specified data directory is not empty.”错误的解决方案
- 用OpenInventor实现的NeHe OpenGL教程-第八课
- 使用 vector erase 指定元素
- java面试200题
- c++学习(模板函数以及模板类)
- Direct3D Devices
- FreeBSD 6.1 使用小技巧