package com.npnets.tools;
import java.io.InputStream;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.npnets.bean.JdbcConfig;
/**
* 1、单例类只能有一个实例
* 2、单例类必须自己自己创建自己的唯一实例
* 3、单例类必须给所有其他对象提供这一实例
*
* 解析oracle-config.xml文件
*
*
* @author zhang
*
*/
public class XmlConfigReader {
//懒汉式单例设计模式(延迟加载lazy)
private static XmlConfigReader instance = null;
//保持jdbc相关配置
private JdbcConfig jdbcConfig =new JdbcConfig();
private XmlConfigReader(){
//以sax方式读取
SAXReader reader = new SAXReader();
//拿到当前线程,装在xml
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("oracle-config.xml");
try {
//用reader接收输入流,然后返回document,document对应着xml文件
Document doc = reader.read(in);
/**
* xml中的数据都在Element中
*/
//oracle驱动
Element driverNameElt = (Element) doc.selectObject("config/db-info/driver-name");
Element urlElt = (Element) doc.selectObject("config/db-info/url");
Element usernameElt = (Element) doc.selectObject("config/db-info/username");
Element passwodElt = (Element) doc.selectObject("config/db-info/password");
//webservice端口号与ip地址 port and ip address
Element hdccserviceip = (Element) doc.selectObject("config/agent-info/hdccserviceip");
Element hdccserviceport = (Element) doc.selectObject("config/agent-info/hdccserviceport");
Element web800ip = (Element) doc.selectObject("config/web800-info/web800ip");
Element web800port = (Element) doc.selectObject("config/web800-info/web800port");
//设置数据库属性值
jdbcConfig.setDriverName(driverNameElt.getStringValue());
jdbcConfig.setUrl(urlElt.getStringValue());
jdbcConfig.setUsername(usernameElt.getStringValue());
jdbcConfig.setPassword(passwodElt.getStringValue());
//设置webservice port and ip address
jdbcConfig.setHdccserverip(hdccserviceip.getStringValue());
jdbcConfig.setHdccserverport(hdccserviceport.getStringValue());
jdbcConfig.setWeb800ip(web800ip.getStringValue());
jdbcConfig.setWeb800port(web800port.getStringValue());
System.out.println(jdbcConfig.getDriverName());
System.out.println(jdbcConfig.getUrl());
System.out.println(jdbcConfig.getUsername());
System.out.println(jdbcConfig.getPassword());
} catch (Exception e) {
e.printStackTrace();
}
}
//synchronized(同步关键字)是一个锁,有互斥的作用。一个进程调用的时候,其他的只能等着
public static XmlConfigReader getInstance(){
if(instance==null){
instance = new XmlConfigReader();
}
return instance;
}
//返回jdbc相关配置
public JdbcConfig getJdbcConfig(){
return jdbcConfig;
}
//测试读取oracle-config.xml成功与否
/*public static void main(String[] args) {
JdbcConfig jd = XmlConfigReader.getInstance().getJdbcConfig();
System.out.println(jd.toString());
}*/
}
SAXReader读取配置
最新推荐文章于 2024-01-19 23:30:18 发布