I have got a problem with jackrabbit in combination with oracle and
weblogic. I was not able to reconstruct the problem, because this
happens on the test server of our customer. I was hoping someone could
explain a little more about it.
The error message and stacktrace:
####<Feb 2, 2007 2:04:26 PM CET> <Error> <HTTP> <servername>
<autoportaal> <ExecuteThread: '10' for queue: 'weblogic.kernel.Default'>
<<WLS Kernel>> <> <BEA-101017>
<[ServletContext(id=32433685,name=autoportaal-web-0.4.17,context-path=/autoportaal)]
Root cause of ServletException.
org.springframework.dao.DataAccessResourceFailureException: Could not
open Jcr Session; nested exception is javax.jcr.RepositoryException: I/O
error while reading locks from '/locks': failed to check existence of
file system entry: /locks: failed to check existence of file system
entry: /locks
Caused by: javax.jcr.RepositoryException: I/O error while reading locks
from '/locks': failed to check existence of file system entry: /locks:
failed to check existence of file system entry: /locks
at
org.apache.jackrabbit.core.lock.LockManagerImpl.<init>(LockManagerImpl.java:126)
at
org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.getLockManager(RepositoryImpl.java:1538)
at
org.apache.jackrabbit.core.RepositoryImpl.getLockManager(RepositoryImpl.java:759)
at
org.apache.jackrabbit.core.WorkspaceImpl.getLockManager(WorkspaceImpl.java:325)
at
org.apache.jackrabbit.core.XASessionImpl.getLockManager(XASessionImpl.java:169)
at org.apache.jackrabbit.core.XASessionImpl.init(XASessionImpl.java:127)
at
org.apache.jackrabbit.core.XASessionImpl.<init>(XASessionImpl.java:100)
at
org.apache.jackrabbit.core.RepositoryImpl.createSessionInstance(RepositoryImpl.java:1253)
at
org.apache.jackrabbit.core.RepositoryImpl.createSession(RepositoryImpl.java:801)
at
org.apache.jackrabbit.core.RepositoryImpl.login(RepositoryImpl.java:1132)
at
org.springmodules.jcr.JcrSessionFactory.getSession(JcrSessionFactory.java:242)
at
org.springmodules.jcr.SessionFactoryUtils.doGetSession(SessionFactoryUtils.java:79)
at
org.springmodules.jcr.SessionFactoryUtils.getSession(SessionFactoryUtils.java:119)
at org.springmodules.jcr.JcrTemplate.getSession(JcrTemplate.java:121)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:68)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:108)
at
nl.anwb.autoportaal.dao.jackrabbit.MediaRepositoryImpl.getMedia(MediaRepositoryImpl.java:37)
at
nl.anwb.autoportaal.facade.impl.CommonContextFacadeImpl.getMedia(CommonContextFacadeImpl.java:108)
at sun.reflect.GeneratedMethodAccessor982.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:280)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
at $Proxy14.getMedia(Unknown Source)
at
nl.anwb.autoportaal.web.servlet.UitvoeringReviewServlet.handleRequestInternal(UitvoeringReviewServlet.java:39)
at
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:45)
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:820)
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:755)
at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396)
at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
at
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
at
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217)
at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:191)
at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at
org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
at
org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:90)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:61)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6724)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
Caused by: org.apache.jackrabbit.core.fs.FileSystemException: failed to
check existence of file system entry: /locks
at
org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.exists(DatabaseFileSystem.java:343)
at
org.apache.jackrabbit.core.fs.FileSystemResource.exists(FileSystemResource.java:140)
at
org.apache.jackrabbit.core.lock.LockManagerImpl.<init>(LockManagerImpl.java:122)
... 63 more
Caused by: java.sql.SQLException: Closed Connection
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
at
oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:698)
at
oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:615)
at
weblogic.jdbc.common.internal.ConnectionEnv.makeStatement(ConnectionEnv.java:1190)
at
weblogic.jdbc.common.internal.ConnectionEnv.getCachedStatement(ConnectionEnv.java:981)
at
weblogic.jdbc.wrapper.PreparedStatement.reCreateStatement(PreparedStatement.java:48)
at weblogic.jdbc.wrapper.Statement.checkStatement(Statement.java:237)
at
weblogic.jdbc.wrapper.PreparedStatement.setString(PreparedStatement.java:636)
at
org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.exists(DatabaseFileSystem.java:332)
... 65 more
org.apache.jackrabbit.core.fs.FileSystemException: failed to check
existence of file system entry: /locks
at
org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.exists(DatabaseFileSystem.java:343)
at
org.apache.jackrabbit.core.fs.FileSystemResource.exists(FileSystemResource.java:140)
at
org.apache.jackrabbit.core.lock.LockManagerImpl.<init>(LockManagerImpl.java:122)
at
org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.getLockManager(RepositoryImpl.java:1538)
at
org.apache.jackrabbit.core.RepositoryImpl.getLockManager(RepositoryImpl.java:759)
at
org.apache.jackrabbit.core.WorkspaceImpl.getLockManager(WorkspaceImpl.java:325)
at
org.apache.jackrabbit.core.XASessionImpl.getLockManager(XASessionImpl.java:169)
at org.apache.jackrabbit.core.XASessionImpl.init(XASessionImpl.java:127)
at
org.apache.jackrabbit.core.XASessionImpl.<init>(XASessionImpl.java:100)
at
org.apache.jackrabbit.core.RepositoryImpl.createSessionInstance(RepositoryImpl.java:1253)
at
org.apache.jackrabbit.core.RepositoryImpl.createSession(RepositoryImpl.java:801)
at
org.apache.jackrabbit.core.RepositoryImpl.login(RepositoryImpl.java:1132)
at
org.springmodules.jcr.JcrSessionFactory.getSession(JcrSessionFactory.java:242)
at
org.springmodules.jcr.SessionFactoryUtils.doGetSession(SessionFactoryUtils.java:79)
at
org.springmodules.jcr.SessionFactoryUtils.getSession(SessionFactoryUtils.java:119)
at org.springmodules.jcr.JcrTemplate.getSession(JcrTemplate.java:121)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:68)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:108)
at
nl.anwb.autoportaal.dao.jackrabbit.MediaRepositoryImpl.getMedia(MediaRepositoryImpl.java:37)
at
nl.anwb.autoportaal.facade.impl.CommonContextFacadeImpl.getMedia(CommonContextFacadeImpl.java:108)
at sun.reflect.GeneratedMethodAccessor982.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:280)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
at $Proxy14.getMedia(Unknown Source)
at
nl.anwb.autoportaal.web.servlet.UitvoeringReviewServlet.handleRequestInternal(UitvoeringReviewServlet.java:39)
at
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:45)
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:820)
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:755)
at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396)
at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
at
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
at
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217)
at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:191)
at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at
org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
at
org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:90)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:61)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6724)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
Caused by: java.sql.SQLException: Closed Connection
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
at
oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:698)
at
oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:615)
at
weblogic.jdbc.common.internal.ConnectionEnv.makeStatement(ConnectionEnv.java:1190)
at
weblogic.jdbc.common.internal.ConnectionEnv.getCachedStatement(ConnectionEnv.java:981)
at
weblogic.jdbc.wrapper.PreparedStatement.reCreateStatement(PreparedStatement.java:48)
at weblogic.jdbc.wrapper.Statement.checkStatement(Statement.java:237)
at
weblogic.jdbc.wrapper.PreparedStatement.setString(PreparedStatement.java:636)
at
org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.exists(DatabaseFileSystem.java:332)
... 65 more
The code at the origin of this exception:
DatabaseFileSystem.java
public boolean exists(String path) throws FileSystemException {
if (!initialized) {
throw new IllegalStateException("not initialized");
}
FileSystemPathUtil.checkFormat(path);
String parentDir = FileSystemPathUtil.getParentDir(path);
String name = FileSystemPathUtil.getName(path);
PreparedStatement stmt = selectExistStmt;
synchronized (stmt) {
ResultSet rs = null;
try {
stmt.setString(1, parentDir); //This is line 332
stmt.setString(2, name);
stmt.execute();
rs = stmt.getResultSet();
// a file system entry exists if the result set
// has at least one entry
return rs.next();
} catch (SQLException e) {
String msg = "failed to check existence of file system
entry: " + path;
log.error(msg, e);
throw new FileSystemException(msg, e);
} finally {
closeResultSet(rs);
resetStatement(stmt);
}
}
}
Does someone has any idea of what went wrong and how to avoid this problem?
Hope someone can help,
Nick Stolwijk