我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;
}
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;
}
用while不可以吗
就是一个jar程序写入数据,在tomcat 不能读取新写入的数据,必须重启tomcat才能读到?
不知道有没有人遇到过此类问题,该怎么解决?