|
From: Serge B. <ser...@gm...> - 2006-04-11 06:22:09
|
Hi,
When requesting the same flow from two browser windows simultaneously after
application start we get error in one window. From the log it is obvious
that the flow is created simultaneously in two request processing threads
("resin-tcp-connection-*:8080-21" and "resin-tcp-connection-*:8080-23" are
thread names). So, some flow creating synchronization is required.
10:08:41 [INFO] resin-tcp-connection-*:8080-23:
org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML
bean definitions from file
[/opt/com/caucho/resin/resin-current/webapps/test/WEB-INF/classes/flows/new=
-
entry-flow-beans.xml]
10:08:41 [INFO] resin-tcp-connection-*:8080-21:
org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML
bean definitions from file
[/opt/com/caucho/resin/resin-current/webapps/test/WEB-INF/classes/flows/new=
-
entry-flow-beans.xml]
10:08:43 [DEBUG] resin-tcp-connection-*:8080-23:
org.springframework.web.servlet.DispatcherServlet - Cleared thread-bound
request context: HttpRequest[11]
10:08:43 [ERROR] resin-tcp-connection-*:8080-23:
org.springframework.web.servlet.DispatcherServlet - Could not complete
request
java.lang.IllegalArgumentException: This flow 'new-entry-flow' already
contains a state with id 'save' -- state ids must be locally unique to the
flow definition; existing state-ids of this flow include:
array<String>['start', 'start', 'input', 'save']
at org.springframework.webflow.Flow.add(Flow.java:202)
at org.springframework.webflow.State.setFlow(State.java:119)
at
org.springframework.webflow.builder.DefaultFlowArtifactFactory.createState(
DefaultFlowArtifactFactory.java:123)
at
org.springframework.webflow.builder.XmlFlowBuilder$LocalFlowArtifactFactory=
.createState
(XmlFlowBuilder.java:1149)
at
org.springframework.webflow.builder.XmlFlowBuilder.parseActionState(
XmlFlowBuilder.java:599)
at
org.springframework.webflow.builder.XmlFlowBuilder.addStateDefinitions(
XmlFlowBuilder.java:550)
at org.springframework.webflow.builder.XmlFlowBuilder.buildStates(
XmlFlowBuilder.java:534)
at org.springframework.webflow.builder.FlowAssembler.assembleFlow(
FlowAssembler.java:111)
at
org.springframework.webflow.registry.RefreshableFlowHolder.assembleFlow(
RefreshableFlowHolder.java:121)
at
org.springframework.webflow.registry.RefreshableFlowHolder.getFlow(
RefreshableFlowHolder.java:76)
at org.springframework.webflow.registry.FlowRegistryImpl.getFlow(
FlowRegistryImpl.java:170)
at
org.springframework.webflow.execution.repository.support.AbstractFlowExecut=
ionRepository.createFlowExecution
(AbstractFlowExecutionRepository.java:76)
at org.springframework.webflow.executor.FlowExecutorImpl.launch(
FlowExecutorImpl.java:154)
at
org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowR=
equest
(FlowRequestHandler.java:117)
at
org.springframework.webflow.executor.mvc.FlowController.handleRequestIntern=
al
(FlowController.java:198)
at
org.springframework.web.servlet.mvc.AbstractController.handleRequest(
AbstractController.java:153)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(
AopUtils.java:287)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoin=
t
(ReflectiveMethodInvocation.java:181)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:148)
best regards,
Serge Bogatyrjov.
|