हम वेबलॉगिक 10 क्लस्टर्ड वातावरण में स्प्रिंग वेब फ़्लो (2.0.9) का उपयोग कर रहे हैं। और उत्पादन में हमें बहुत सारे लॉकटाइमआउट अपवाद प्राप्त हो रहा है: 30 सेकंड के बाद वार्तालाप लॉक प्राप्त करने में असमर्थ।स्प्रिंग वेब फ्लो लॉकटाइमआउट अपवाद
मैं यह पता लगाने की कोशिश कर रहा हूं कि कुछ मामलों में उपरोक्त अपवाद क्यों होता है जब केवल एक क्लिक होता है या हम साइट के होम पेज तक पहुंच रहे हैं।
कृपया कोड जो SWF में FlowController के लिए लॉक करने के लिए कोशिश कर रहा है लगता है। मैं क्या नहीं समझ सकता कि लॉक सर्वलेट पर है जिसे एक्सेस किया जा रहा है या कुछ और?
एक वेब अनुप्रयोग में समझने के लिए जब इस लॉक होता है जो संसाधन वास्तव में SWF में लॉक हो गया है मदद कृपया?
ReentrantLock की अवधारणा को समझने के लिए, नीचे दिए गए लिंक को देखें।
What is the Re-entrant lock and concept in general?
अग्रिम धन्यवाद।
एक्सेप्शन स्टैक ट्रेस
org.springframework.webflow.conversation.impl.LockTimeoutException: Unable to acquire conversation lock after 30 seconds
at org.springframework.webflow.conversation.impl.JdkConcurrentConversationLock.lock(JdkConcurrentConversationLock.java:44)
at org.springframework.webflow.conversation.impl.ContainedConversation.lock(ContainedConversation.java:69)
at org.springframework.webflow.execution.repository.support.ConversationBackedFlowExecutionLock.lock(ConversationBackedFlowExecutionLock.java:51)
at org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:166)
at org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
at org.springframework.webflow.mvc.servlet.FlowController.handleRequest(FlowController.java:174)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
SWF में
package org.springframework.webflow.conversation.impl;
import java.io.Serializable;
import java.util.concurrent.locks.ReentrantLock;
/**
* A conversation lock that relies on a {@link ReentrantLock} within Java 5's <code>util.concurrent.locks</code>
* package.
*
* @author Keith Donald
*/
class JdkConcurrentConversationLock implements ConversationLock, Serializable {
/**
* The lock.
*/
private ReentrantLock lock = new ReentrantLock();
public void lock() {
// ensure non-reentrant behaviour
if (!lock.isHeldByCurrentThread()) {
lock.lock();
}
}
public void unlock() {
// ensure non-reentrant behaviour
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}