|
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.
|
|
From: Keith D. <ke...@in...> - 2006-04-11 20:44:24
|
Hi Serge,
Can you open an JIRA issue reporting this? We'll make sure it is resolved
for 1.0 RC1.
Thanks
Keith
> 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.AbstractFlowExecutionRepository.createFlowExecution
> (AbstractFlowExecutionRepository.java:76)
> at org.springframework.webflow.executor.FlowExecutorImpl.launch(
> FlowExecutorImpl.java:154)
> at
> org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest
> (FlowRequestHandler.java:117)
> at
> org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal
> (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.invokeJoinpoint
> (ReflectiveMethodInvocation.java:181)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:148)
>
>
> best regards,
> Serge Bogatyrjov.
>
--
Keith Donald
Principal Consultant, Interface21
http://www.springframework.com - Spring Services From the Source
|