Object:
package com.lingtu.nanning.config;
public class DataSource {
private String dataLink;
private String driver;
private String userName;
private String password;
private String maxConn;
public String getDataLink() {
return dataLink;
}
public void setDataLink(String dataLink) {
this.dataLink = dataLink;
}
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getMaxConn() {
return maxConn;
}
public void setMaxConn(String maxConn) {
this.maxConn = maxConn;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
XML:
<DataSource>
<dataLink>jdbc:oracle:thin:@172.16.0.82:1521:orcl</dataLink>
<driver>oracle.jdbc.driver.OracleDriver</driver>
<userName>oss</userName>
<password>oss</password>
<maxConn>100</maxConn>
</DataSource>
code:
package com.lingtu.nanning.config;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.sql.Connection;
import org.apache.log4j.Logger;
import com.lingtu.nanning.dao.DAO;
import com.lingtu.nanning.exception.ConfigException;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class DataSourceManager {
private static Logger logger = Logger.getLogger(DataSourceManager.class);
private static DataSourceManager dataSourceManager = null;
public static String APPPATH = null;
public static DataSourceManager getInstance() {
if (dataSourceManager == null) {
dataSourceManager = new DataSourceManager();
}
return dataSourceManager;
}
public void initDataSource() throws ConfigException {
String configFilePath = APPPATH + "config/config.xml";
DataSource dataSource = null;
InputStream in = null;
XStream stream = null;
Connection conn = null;
try {
in = new FileInputStream(configFilePath);
InputStreamReader reader = new InputStreamReader(in, Charset
.forName("GBK"));
stream = new XStream(new DomDriver());
stream.alias("DataSource", DataSource.class);
dataSource = (DataSource) stream.fromXML(reader);
DAO.dataSource = dataSource;
conn = DAO.getInstance().getConnection();
if (conn == null) {
throw new ConfigException("图层权限数据源连接测试失败!");
}
} catch (Exception e) {
logger.error(e.getMessage());
throw new ConfigException("图层权限数据源配置或连接错误!");
} finally {
try {
in.close();
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void saveDataSource(DataSource dataSource) throws ConfigException {
String configFilePath = APPPATH + "config\\config.xml";
XStream stream = new XStream();
OutputStream out = null;
Connection conn = null;
try {
out = new FileOutputStream(new File(configFilePath));
OutputStreamWriter writer = new OutputStreamWriter(out, Charset
.forName("GBK"));
stream.alias("DataSource", DataSource.class);
stream.toXML(dataSource, writer);
DAO.dataSource = dataSource;
conn = DAO.getInstance().getConnection();
if (conn == null) {
throw new ConfigException("图层权限数据源连接测试失败!");
}
} catch (Exception e) {
logger.error(e.getMessage());
throw new ConfigException("图层权限数据源配置或连接错误!");
} finally {
try {
out.close();
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}