Berkeley DB XML 多线程添加文档例子
2010-03-01 18:25
363 查看
import java.io.File; import java.util.concurrent.CountDownLatch; import com.sleepycat.db.Environment; import com.sleepycat.db.EnvironmentConfig; import com.sleepycat.db.LockDetectMode; import com.sleepycat.dbxml.XmlContainer; import com.sleepycat.dbxml.XmlContainerConfig; import com.sleepycat.dbxml.XmlDocument; import com.sleepycat.dbxml.XmlDocumentConfig; import com.sleepycat.dbxml.XmlException; import com.sleepycat.dbxml.XmlManager; import com.sleepycat.dbxml.XmlManagerConfig; import com.sleepycat.dbxml.XmlQueryContext; import com.sleepycat.dbxml.XmlResults; import com.sleepycat.dbxml.XmlTransaction; import com.sleepycat.dbxml.XmlUpdateContext; public class DbxmlThreads extends Thread { public static XmlManager mgr = null; public static String containerName = "test.dbxml"; public static Environment dbEnv = null; private static XmlContainer cont = null; static { EnvironmentConfig envConf = new EnvironmentConfig(); envConf.setThreaded(true); envConf.setAllowCreate(true); envConf.setTransactional(true); envConf.setInitializeCache(true); envConf.setInitializeLocking(true); envConf.setInitializeLogging(true); envConf.setCacheSize(64 * 1024 * 1024); envConf.setLockDetectMode(LockDetectMode.DEFAULT); XmlManagerConfig xmlMgrConfig = new XmlManagerConfig(); xmlMgrConfig.setAdoptEnvironment(true); File dbHome = new File("."); try { dbEnv = new Environment(dbHome, envConf); mgr = new XmlManager(dbEnv, xmlMgrConfig); // 创建XmlContainer if(mgr.existsContainer(containerName)!=0) mgr.removeContainer(containerName); XmlContainerConfig containerConf = new XmlContainerConfig(); containerConf.setTransactional(true); containerConf.setAllowCreate(true); containerConf.setContainerType(XmlContainer.NodeContainer); cont = mgr.openContainer(containerName, containerConf); cont.setAutoIndexing(false); } catch (Exception e) { e.printStackTrace(); } } private String name; private CountDownLatch doneSignal; DbxmlThreads(String name, CountDownLatch doneSignal) { this.name = name; this.doneSignal = doneSignal; } public void run() { XmlTransaction txn = null; try { String content = "<"+name+">I am "+name+""; for (int i = 0; i < 100; i++) { XmlDocumentConfig dc = new XmlDocumentConfig(); dc.setGenerateName(true); System.out.println(name+" insert "+i); txn = mgr.createTransaction(); XmlDocument doc = mgr.createDocument(); doc.setContent(content); cont.putDocument(txn, doc, dc); txn.commit(); } } catch (XmlException e) { System.out.println("insert error:" + e.getMessage()); } finally { doneSignal.countDown(); } } public static void main(String[] args) throws Exception { CountDownLatch doneSignal = new CountDownLatch(5); DbxmlThreads threadA = new DbxmlThreads("A", doneSignal); DbxmlThreads threadB = new DbxmlThreads("B", doneSignal); DbxmlThreads threadC = new DbxmlThreads("C", doneSignal); DbxmlThreads threadD = new DbxmlThreads("D", doneSignal); DbxmlThreads threadE = new DbxmlThreads("E", doneSignal); threadA.start(); threadB.start(); threadC.start(); threadD.start(); threadE.start(); doneSignal.await(); XmlQueryContext qc = mgr.createQueryContext(); String query = "collection('"+containerName+"')/A"; XmlResults res = mgr.query(query, qc); System.out.println("The results size is: "+res.size()); res.delete(); cont.close(); mgr.close(); } }
相关文章推荐
- java中使用JAXP解析xml(二)向XML文档中添加标签
- 为Eclipse添加XML文档所使用的DTD或XML Schema
- xml文档转换工具,附图表例子(hta)
- xml文档的添加,删除,修改(二)
- 这是一个关于XML文档的操作管理器XMLHelper类,类中包括XML文档的创建,文档节点和属性的读取,添加,修改,删除的方法功能的实现
- xml多线程解析,简单易懂的例子
- Java 利用DOM读取XML文档的例子
- PHP DOM操作xml文档,添加元素,添加元素属性
- PHP SimpleXML 操作xml文档,添加元素 添加属性
- 【HTML/XML 5】使用XSL给XML文档添加样式
- 用JAVA创建XML文档,为java API文档添加搜索功能
- Asp.net XML文档进行添加删改操作的实例代码
- 通过php添加xml文档内容的方法
- 给XML文档添加新 ”records”
- 【HTML/XML 5】使用XSL给XML文档添加样式
- Java里面对XML文档的处理【经典例子分析】
- 如何为MyEclipse添加XML文档所使用的XML Schema
- Asp.net 对XML文档进行添加删改的实例(转)
- js添加、修改、删除xml节点例子
- 添加节点至XML文档中去