unlock()从未调用,但最终使用try.finally



我使用的是servlet(氛围框架和自定义框架),它们都使用相同的ReentrantLock来同步一些操作。我得到了一个令人困惑的行为,即单个线程一次又一次地进入锁,而从未调用与其前一个lock()匹配的unlock()

出于调试目的,我在lock()调用之后添加了堆栈跟踪的转储,它总是显示完全相同的输出。这难道不意味着,我的方法被一次又一次地调用,但随后的try...finally永远不会执行吗?

IManagerLock batchLock = _lockManager.getManagerLock(true);
try {
    // ...do something - in this case the code won't try to lock() again
}
finally {
    batchLock.unlock();
}

getManagerLock()将获取锁并在锁周围返回一些包装器对象,这允许我执行一些调试等。例如,它将为包装器对象分配一个UUID,该UUID将打印到lock()unlock()上的日志中。

以下是有线堆栈的一个示例。它重复了七次。正如您所看到的,只有Locked: xxx消息,而没有Unlocked: xxx消息。

17:25:18,550 INFO  [stdout] (http-/0.0.0.0:8080-13) Locked: 1a59d9ea-841f-4024-9043-67c8e649c342
17:25:18,551 ERROR [stderr] (http-/0.0.0.0:8080-13) java.lang.Exception
17:25:18,551 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.DefaultLockManager$LockManagerBatch.<init>(DefaultLockManager.java:377)
17:25:18,552 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.DefaultLockManager.getManagerLock(DefaultLockManager.java:246)
17:25:18,553 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.DefaultLockManager$Proxy$_$$_WeldClientProxy.getManagerLock(DefaultLockManager$Proxy$_$$_WeldClientProxy.java)
17:25:18,553 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.channel.LockChannel.onClose(LockChannel.java:128)
17:25:18,554 ERROR [stderr] (http-/0.0.0.0:8080-13)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
17:25:18,554 ERROR [stderr] (http-/0.0.0.0:8080-13)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
17:25:18,555 ERROR [stderr] (http-/0.0.0.0:8080-13)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
17:25:18,556 ERROR [stderr] (http-/0.0.0.0:8080-13)     at java.lang.reflect.Method.invoke(Method.java:606)
17:25:18,556 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.util.Utils.invoke(Utils.java:209)
17:25:18,556 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.config.managed.ManagedAtmosphereHandler.invoke(ManagedAtmosphereHandler.java:335)
17:25:18,557 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.config.managed.ManagedAtmosphereHandler.onStateChange(ManagedAtmosphereHandler.java:209)
17:25:18,557 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.invokeAtmosphereHandler(AsynchronousProcessor.java:544)
17:25:18,558 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.completeLifecycle(AsynchronousProcessor.java:486)
17:25:18,558 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.interceptor.OnDisconnectInterceptor.inspect(OnDisconnectInterceptor.java:77)
17:25:18,558 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.invokeInterceptors(AsynchronousProcessor.java:340)
17:25:18,559 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:199)
17:25:18,559 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:115)
17:25:18,560 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.container.JBossWebCometSupport.service(JBossWebCometSupport.java:93)
17:25:18,560 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2281)
17:25:18,560 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AtmosphereServlet.event(AtmosphereServlet.java:326)
17:25:18,560 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilterEvent(ApplicationFilterChain.java:494)
17:25:18,560 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.ApplicationFilterChain.doFilterEvent(ApplicationFilterChain.java:399)
17:25:18,561 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:273)
17:25:18,561 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
17:25:18,561 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
17:25:18,561 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:165)
17:25:18,562 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
17:25:18,562 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
17:25:18,562 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
17:25:18,562 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:372)
17:25:18,562 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:897)
17:25:18,563 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:634)
17:25:18,563 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:2039)
17:25:18,563 ERROR [stderr] (http-/0.0.0.0:8080-13)     at java.lang.Thread.run(Thread.java:745)
17:25:18,567 INFO  [stdout] (http-/0.0.0.0:8080-13) Locked: 56fe9bc2-6c52-4fe4-8011-858221db4318
17:25:18,568 ERROR [stderr] (http-/0.0.0.0:8080-13) java.lang.Exception
17:25:18,568 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.DefaultLockManager$LockManagerBatch.<init>(DefaultLockManager.java:377)
17:25:18,568 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.DefaultLockManager.getManagerLock(DefaultLockManager.java:246)
17:25:18,568 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.DefaultLockManager$Proxy$_$$_WeldClientProxy.getManagerLock(DefaultLockManager$Proxy$_$$_WeldClientProxy.java)
17:25:18,568 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.channel.LockChannel.onClose(LockChannel.java:128)
17:25:18,569 ERROR [stderr] (http-/0.0.0.0:8080-13)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
17:25:18,569 ERROR [stderr] (http-/0.0.0.0:8080-13)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
17:25:18,569 ERROR [stderr] (http-/0.0.0.0:8080-13)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
17:25:18,569 ERROR [stderr] (http-/0.0.0.0:8080-13)     at java.lang.reflect.Method.invoke(Method.java:606)
17:25:18,569 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.util.Utils.invoke(Utils.java:209)
17:25:18,569 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.config.managed.ManagedAtmosphereHandler.invoke(ManagedAtmosphereHandler.java:335)
17:25:18,569 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.config.managed.ManagedAtmosphereHandler.onStateChange(ManagedAtmosphereHandler.java:209)
17:25:18,570 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.invokeAtmosphereHandler(AsynchronousProcessor.java:544)
17:25:18,570 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.completeLifecycle(AsynchronousProcessor.java:486)
17:25:18,570 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.interceptor.OnDisconnectInterceptor.inspect(OnDisconnectInterceptor.java:77)
17:25:18,572 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.invokeInterceptors(AsynchronousProcessor.java:340)
17:25:18,572 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:199)
17:25:18,572 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:115)
17:25:18,572 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.container.JBossWebCometSupport.service(JBossWebCometSupport.java:93)
17:25:18,575 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2281)
17:25:18,575 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AtmosphereServlet.event(AtmosphereServlet.java:326)
17:25:18,575 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilterEvent(ApplicationFilterChain.java:494)
17:25:18,575 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.ApplicationFilterChain.doFilterEvent(ApplicationFilterChain.java:399)
17:25:18,576 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:273)
17:25:18,576 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
17:25:18,576 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
17:25:18,576 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:165)
17:25:18,577 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
17:25:18,577 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
17:25:18,577 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
17:25:18,577 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:372)
17:25:18,579 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:897)
17:25:18,579 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:634)
17:25:18,579 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:2039)
17:25:18,579 ERROR [stderr] (http-/0.0.0.0:8080-13)     at java.lang.Thread.run(Thread.java:745)
17:25:18,584 INFO  [stdout] (http-/0.0.0.0:8080-13) Locked: 0f2d436a-7e80-4a56-97e2-42187ac56a8b
17:25:18,584 ERROR [stderr] (http-/0.0.0.0:8080-13) java.lang.Exception
17:25:18,584 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.DefaultLockManager$LockManagerBatch.<init>(DefaultLockManager.java:377)
17:25:18,585 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.DefaultLockManager.getManagerLock(DefaultLockManager.java:246)
17:25:18,585 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.DefaultLockManager$Proxy$_$$_WeldClientProxy.getManagerLock(DefaultLockManager$Proxy$_$$_WeldClientProxy.java)
17:25:18,585 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.channel.LockChannel.onClose(LockChannel.java:128)
17:25:18,586 ERROR [stderr] (http-/0.0.0.0:8080-13)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
17:25:18,586 ERROR [stderr] (http-/0.0.0.0:8080-13)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
17:25:18,586 ERROR [stderr] (http-/0.0.0.0:8080-13)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
17:25:18,586 ERROR [stderr] (http-/0.0.0.0:8080-13)     at java.lang.reflect.Method.invoke(Method.java:606)
17:25:18,586 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.util.Utils.invoke(Utils.java:209)
17:25:18,586 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.config.managed.ManagedAtmosphereHandler.invoke(ManagedAtmosphereHandler.java:335)
17:25:18,589 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.config.managed.ManagedAtmosphereHandler.onStateChange(ManagedAtmosphereHandler.java:209)
17:25:18,589 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.invokeAtmosphereHandler(AsynchronousProcessor.java:544)
17:25:18,589 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.completeLifecycle(AsynchronousProcessor.java:486)
17:25:18,589 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.interceptor.OnDisconnectInterceptor.inspect(OnDisconnectInterceptor.java:77)
17:25:18,591 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.invokeInterceptors(AsynchronousProcessor.java:340)
17:25:18,591 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:199)
17:25:18,591 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:115)
17:25:18,591 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.container.JBossWebCometSupport.service(JBossWebCometSupport.java:93)
17:25:18,593 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2281)
17:25:18,593 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.atmosphere.cpr.AtmosphereServlet.event(AtmosphereServlet.java:326)
17:25:18,593 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilterEvent(ApplicationFilterChain.java:494)
17:25:18,593 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.ApplicationFilterChain.doFilterEvent(ApplicationFilterChain.java:399)
17:25:18,595 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:273)
17:25:18,595 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
17:25:18,595 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
17:25:18,595 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:165)
17:25:18,596 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
17:25:18,597 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
17:25:18,597 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
17:25:18,597 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:372)
17:25:18,598 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:897)
17:25:18,598 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:634)
17:25:18,599 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:2039)
17:25:18,599 ERROR [stderr] (http-/0.0.0.0:8080-13)     at java.lang.Thread.run(Thread.java:745)

几秒钟后,同一个线程处理了更多的HTTP请求,并且全部成功返回。这一次使用正确的Locked: xxxUnlocked: xxx消息:

17:25:23,891 INFO  [stdout] (http-/0.0.0.0:8080-13) Locked: 351e7416-c74b-4974-b2a6-a2ba0a0ad87d
17:25:23,892 ERROR [stderr] (http-/0.0.0.0:8080-13) java.lang.Exception
17:25:23,893 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.DefaultLockManager$LockManagerBatch.<init>(DefaultLockManager.java:377)
17:25:23,894 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.DefaultLockManager.getManagerLock(DefaultLockManager.java:246)
17:25:23,896 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.DefaultLockManager$Proxy$_$$_WeldClientProxy.getManagerLock(DefaultLockManager$Proxy$_$$_WeldClientProxy.java)
17:25:23,897 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.command.LockCommand.invoke(LockCommand.java:33)
17:25:23,898 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.PageLockCommandServlet._executeCommand(PageLockCommandServlet.java:90)
17:25:23,899 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.jee.pagelock.PageLockCommandServlet.doPost(PageLockCommandServlet.java:61)
17:25:23,900 ERROR [stderr] (http-/0.0.0.0:8080-13)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
17:25:23,900 ERROR [stderr] (http-/0.0.0.0:8080-13)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
17:25:23,901 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
17:25:23,901 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
17:25:23,901 ERROR [stderr] (http-/0.0.0.0:8080-13)     at xxx.webapp.servlet.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:51)
17:25:23,902 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
17:25:23,902 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
17:25:23,903 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)
17:25:23,903 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
17:25:23,903 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
17:25:23,904 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
17:25:23,904 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
17:25:23,904 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
17:25:23,905 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:165)
17:25:23,905 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
17:25:23,905 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
17:25:23,906 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
17:25:23,906 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:372)
17:25:23,906 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:897)
17:25:23,907 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:634)
17:25:23,907 ERROR [stderr] (http-/0.0.0.0:8080-13)     at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:2039)
17:25:23,907 ERROR [stderr] (http-/0.0.0.0:8080-13)     at java.lang.Thread.run(Thread.java:745)
17:25:23,908 INFO  [stdout] (http-/0.0.0.0:8080-13) Unlocked: 351e7416-c74b-4974-b2a6-a2ba0a0ad87d

知道发生了什么事吗?你能向我解释一下,在不完全执行函数体的情况下,同一个线程是如何一次又一次地执行的吗?不开锁?

编辑12.11.2015 19:56:如注释中所述:http-/0.0.0.0:8080-13是线程的名称。所以我确信这是同一个线程再次执行。

编辑13.11.2015 09:38:如评论中所述:我使用JBoss 7.1.3.Final和JBossWeb 7.0.17.Final。AtmosphereServlet使用asyncSupported=true,而自定义的则不使用。

我找到了这种行为的解决方案:涉及到一个(CDI)bean,由于某种原因无法创建。在我的日志消息之后和try块之前引发了一个异常。但由于大气框架捕获了它,它在日志中不可见。只有当它设置为debug级别(生产服务器上没有设置)时,框架本身才会将其打印到日志中。

一个非常愚蠢的自我引起的错误!

最新更新