我web中使用Berkeley DB JE不能读取新的数据,不知道有遇到过的没有
web使用的是tomcat 
我有一个非web程序 打包成jar 定时向bdb中添加数据,但是web中确不能读取新的数据,只有重启tomcat才能读取
非web程序,可以读取的读取的代码
public HashMap getData(Long id,String dbname) throws UnsupportedEncodingException{
HashMap map = new HashMap();
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setAllowCreate(false);
envConfig.setReadOnly(true);
File dbfile = new File(cacheDir+"/"+name);
this.myDbEnvironment = new Environment(dbfile, envConfig); 
DatabaseEntry queryKey = new DatabaseEntry();
     String key = String.valueOf(id);
     queryKey.setData(key.getBytes("GBK"));
if(myDbEnvironment!=null){
        try {
        DatabaseConfig dbConfig = new DatabaseConfig();
        dbConfig.setAllowCreate(false);
        dbConfig.setReadOnly(true);
         Database myDatabase = myDbEnvironment.openDatabase(null,dbname,dbConfig); //打开库,要提供一个数据库名字作为参数
         StoredClassCatalog classCatalog = new StoredClassCatalog(myDatabase);
     EntryBinding dataBinding = new SerialBinding(classCatalog,java.util.HashMap.class);
     DatabaseEntry dataEntry = new DatabaseEntry();  
     OperationStatus status = myDatabase.get(null, queryKey,dataEntry,LockMode.DEFAULT);
     if (status == OperationStatus.SUCCESS) {
     map = (HashMap)dataBinding.entryToObject(dataEntry);   
     }
     classCatalog.close();
     myDatabase.close();
        }
        catch (Exception dbe) {
     dbe.printStackTrace();
    }        
}
     return map;
}

解决方案 »

  1.   

    是啊,就是tomcat重启后 读一次,再有新数据进来,就不读了
      

  2.   

    为什么要用 if(myDbEnvironment!=null){
    用while不可以吗
      

  3.   

    谢谢楼上回复,问题不在这我在网上下了一个demo 也有类似的问题
    就是一个jar程序写入数据,在tomcat 不能读取新写入的数据,必须重启tomcat才能读到?
    不知道有没有人遇到过此类问题,该怎么解决?