求JAVA网络编程高手.........帮忙解决异常问题!

xu101q 2010-11-12 12:43:08
我遇到了这样一个异常问题: java.io.IOException: (JE 3.3.82) A je.lck file exists in C:\index\cis\segments\bdbdata The environment can not be locked for single writer access

求高人解答!!!



原代码如下:
	private static void init() throws IOException {
LOG.info("初始化DB......");
try {

File file = new File(SearchContext.search_dir + File.separator + "segments" +File.separator + "bdbdata");
if (!file.exists())
file.mkdirs();
EnvironmentConfig envConf = new EnvironmentConfig();
envConf.setAllowCreate(true);
envConf.setTransactional(true);
envConf.setConfigParam("je.log.fileMax", "1000000000");
dbEnv = new Environment(file, envConf);
DatabaseConfig dbConf = new DatabaseConfig();
dbConf.setAllowCreate(true);
dbConf.setTransactional(true);
dbConf.setSortedDuplicates(false);
String database = "data";
myDb = dbEnv.openDatabase(null, database, dbConf);
String delDocDBName = "delDB";
delDocDB = dbEnv.openDatabase(null, delDocDBName, dbConf);//也使用Propertie
classCatalogDb = dbEnv.openDatabase(null,
"ClassCatalogDB",
dbConf);
classCatalog = new StoredClassCatalog(classCatalogDb);
docNum = myDb.count() ;
dataBinding = new SerialBinding(classCatalog, Properties.class);


} catch (Exception de) {

throw new IOException(de.getMessage());
}
}


程序执行到dbEnv = new Environment(file, envConf);这句就发生异常........


部分异常信息为:[code=Java]java.io.IOException: (JE 3.3.82) A je.lck file exists in C:\index\cis\segments\b
dbdata The environment can not be locked for single writer access.
at com.xdtech.platform.core.db.BerkeleyDB.init(BerkeleyDB.java:84)
at com.xdtech.platform.core.db.BerkeleyDB.<clinit>(BerkeleyDB.java:38)
at org.apache.nutch.searcher.IndexSearcher.getDetails(IndexSearcher.java
:122)
at org.apache.nutch.searcher.NutchBean.getDetails(NutchBean.java:374)
at com.xdtech.platform.web.actions.search.WarnInfoPushAction.pushWarnInf
oToOtherAction(WarnInfoPushAction.java:137)
at com.xdtech.platform.web.actions.search.WarnInfoPushAction$$FastClassB
yCGLIB$$b8757c3.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocatio
n.invokeJoinpoint(Cglib2AopProxy.java:675)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:154)
at org.springframework.transaction.interceptor.TransactionInterceptor.in
voke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:176)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterc
eptor.intercept(Cglib2AopProxy.java:616)
at com.xdtech.platform.web.actions.search.WarnInfoPushAction$$EnhancerBy
CGLIB$$e1866900.pushWarnInfoToOtherAction(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultA
ctionInvocation.java:399)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(Defa
ultActionInvocation.java:262)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:224)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doInte
rcept(DefaultWorkflowInterceptor.java:213)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept
(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default
ActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default
ActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim
erStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:216)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept
(MethodFilterInterceptor.java:88)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default
ActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default
ActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim
erStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:216)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.interc
ept(ConversionErrorInterceptor.java:123)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default
ActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default
ActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim
erStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:216)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.intercept(P
arametersInterceptor.java:161)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default
ActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default
ActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim
erStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:216)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.inter
cept(StaticParametersInterceptor.java:105)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default
ActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default
ActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim
erStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:216)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(Checkbox
Interceptor.java:83)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default
ActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default
ActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim
erStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:216)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUp
loadInterceptor.java:207)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default
ActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default
ActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim
erStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:216)
[code]





...全文
227 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChDw 2010-11-12
  • 打赏
  • 举报
回复
首先在代码里面没有看到有关闭方法,这个必须增加

同步方法就是在方法声明中增加synchronized啊
xu101q 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chdw 的回复:]
估计是你之前delDocDB 这些DB没有关闭,导致再次打开的时候无法取得写锁


你应该增加关闭方法,而且可能还需要对这段代码增加同步声明,否则并发可能有问题
[/Quote]

同步声明怎么写哟,给点提示好不!!!
ChDw 2010-11-12
  • 打赏
  • 举报
回复
估计是你之前delDocDB 这些DB没有关闭,导致再次打开的时候无法取得写锁


你应该增加关闭方法,而且可能还需要对这段代码增加同步声明,否则并发可能有问题
zn85600301 2010-11-12
  • 打赏
  • 举报
回复
貌似你的文件已经被锁了
majy 2010-11-12
  • 打赏
  • 举报
回复
你的文件被其他人用了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧