技术分享
J2EE下的oracle数据库备份方法
2021-06-01
2.获取application中关于数据库定义的信息,包括用户名,密码,url,.hbm.xml文件等。
package com.gao.sys;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.SAXException;
public class WriteXMLWithDom {
public WriteXMLWithDom() {
}
public int CallWriteXMLWithDom(String fname, String tablename) {
int returnValue = 0;
try {
File file = new File(fname);
BufferedInputStream bufferedInputStream = new BufferedInputStream(
new FileInputStream(file));
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
InputStream instr = new FileInputStream(fname);
Document doc = parser.parse(instr);
// 根节点
NodeList nodeList = doc.getElementsByTagName("beans");
for (int b = 0; b < nodeList.getLength(); b++) {
Node book = nodeList.item(b);
for (Node bean = book.getFirstChild(); bean != null; bean = bean
.getNextSibling()) {
// bean节点
if (bean.getNodeName().equals("bean")) {
for (int i = 0; i < bean.getChildNodes().getLength(); i++) {
// property节点
Node pro = bean.getChildNodes().item(i);
if (pro.getAttributes() != null
&& pro.getAttributes().getNamedItem("name") != null) {
if (pro.getAttributes().getNamedItem("name")
.getNodeValue().equals(
"mappingResources")) {
// list节点
Node listn = pro.getFirstChild()
.getNextSibling();
Element elistn = (Element) listn;
Element newvalue = doc
.createElement("value");
Text newtest = doc
.createTextNode("com/gao/data/bean/"
+ tablename + ".hbm.xml");
newvalue.appendChild(newtest);
elistn.appendChild(newvalue);
}
// }
FileOutputStream outStream = new FileOutputStream(fname);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream,
"UTF-8");
try {
// Prepare the DOM document for writing
Source source = new DOMSource(doc);
// Prepare the output file
Result result = new StreamResult(outWriter);
// Write the DOM document to the file
Transformer xformer = TransformerFactory.newInstance()
.newTransformer();
xformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
// xformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,"dtd/spring-beans.dtd");
// xformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC,"-//SPRING//DTD
// BEAN//EN");
xformer.transform(source, result);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
try {
outWriter.close();
outStream.close();
returnValue = 1;
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} finally {
return returnValue;
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
return returnValue;
}
}
public int DeleteNodeFromXMLWithDom(String fname, String tablename) {
int returnValue = 0;
try {
File file = new File(fname);
BufferedInputStream bufferedInputStream = new BufferedInputStream(
new FileInputStream(file));
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
InputStream instr = new FileInputStream(fname);
Document doc = parser.parse(instr);
// 根节点
NodeList nodeList = doc.getElementsByTagName("beans");
for (int b = 0; b < nodeList.getLength(); b++) {
Node book = nodeList.item(b);
for (Node bean = book.getFirstChild(); bean != null; bean = bean
.getNextSibling()) {
// bean节点
if (bean.getNodeName().equals("bean")) {
for (int i = 0; i < bean.getChildNodes().getLength(); i++) {
// property节点
Node pro = bean.getChildNodes().item(i);
if (pro.getAttributes() != null
&& pro.getAttributes().getNamedItem("name") != null) {
if (pro.getAttributes().getNamedItem("name")
.getNodeValue().equals(
"mappingResources")) {
// list节点
Node listn = pro.getFirstChild()
.getNextSibling();
Element elistn = (Element) listn;
Node valuen = elistn.getFirstChild();
int k = valuen.getChildNodes().getLength();
for(int j=0;j<elistn.getChildNodes().getLength()-1;j++){
valuen=valuen.getNextSibling();
if(valuen.getTextContent().contains(
tablename)){
listn.removeChild(valuen);
break;
}
// }
FileOutputStream outStream = new FileOutputStream(fname);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream,
"UTF-8");
try {
// Prepare the DOM document for writing
Source source = new DOMSource(doc);
// Prepare the output file
Result result = new StreamResult(outWriter);
// Write the DOM document to the file
Transformer xformer = TransformerFactory.newInstance()
.newTransformer();
xformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
xformer.transform(source, result);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
try {
outWriter.close();
outStream.close();
returnValue = 1;
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} finally {
return returnValue;
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
return returnValue;
}
}
public String[] GetOralAddrWithDom(String fname) {
String[] str = { "", "", "" };
try {
File file = new File(fname);
BufferedInputStream bufferedInputStream = new BufferedInputStream(
new FileInputStream(file));
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
InputStream instr = new FileInputStream(fname);
Document doc = parser.parse(instr);
// 根节点
NodeList nodeList = doc.getElementsByTagName("beans");
for (int b = 0; b < nodeList.getLength(); b++) {
Node book = nodeList.item(b);
for (Node bean = book.getFirstChild(); bean != null; bean = bean
.getNextSibling()) {
// bean节点
if (bean.getNodeName().equals("bean")
&& bean.getAttributes().getNamedItem("id")
.getNodeValue().equals("DataSource")) {
for (int i = 0; i < bean.getChildNodes().getLength(); i++) {
// property节点
Node pro = bean.getChildNodes().item(i);
if (pro.getAttributes() != null
&& pro.getAttributes().getNamedItem("name") != null) {
if (pro.getAttributes().getNamedItem("name")
.getNodeValue().equals("url")) {
str[0] = pro.getAttributes().getNamedItem(
"value").getNodeValue();
}
if (pro.getAttributes().getNamedItem("name")
.getNodeValue().equals("username")) {
str[1] = pro.getAttributes().getNamedItem(
"value").getNodeValue();
}
if (pro.getAttributes().getNamedItem("name")
.getNodeValue().equals("password")) {
str[2] = pro.getAttributes().getNamedItem(
"value").getNodeValue();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
return str;

- 标签:
-
容灾备份