Announcement Announcement Module
No announcement yet.
Problems with Java 6? Page Title Module
Move Remove Collapse
Conversation Detail Module
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problems with Java 6?


    I wonder whether there are known incompatibilities between SWF2.0.8 and Java6 (6.0.18).

    I ask this because we have issues with this combination, particularly when we use pop-up dialogs. Things work perfectly fine with any version of Java 5 we have tried though.

    The issue is that the dialogs won't pop-up. Looking at the Webflow debug, it looks like it cannot find the corresponding flow key to restore it in some cases, but there are no useful details returned.
    org.springframework.web.servlet.handler.SimpleMappingExceptionResolver.doResolveException() ..... A problem occurred restoring the flow execution with key 'e3s8'>
    See the full debug below:
    <2010-03-11 10:21:04,426> DEBUG <> org.springframework.webflow.engine.impl.FlowExecutionImpl.assignKey() <Assigned key e3s8>
    <2010-03-11 10:21:04,426> DEBUG <> org.springframework.webflow.engine.Transition.execute() <Completed transition execution.  As a result, the new state is 'securityQuestionsDisplayView' in flow 'customer-search-flow'>
    <2010-03-11 10:21:04,426> DEBUG <> org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository.putFlowExecution() <Putting flow execution '[[email protected] flow = 'login-policy-flow', flowSessions = list[[[email protected] flow = 'login-policy-flow', state = 'customerSearchSubFlow', scope = map['username' -> '---', 'previousLoginDate' -> Thu Mar 11 12:00:00 GMT 2010, 'LOGIN_POLICY_FAILED_LOGIN' -> false, 'loginPolicyForm' -> [email protected], 'LOGIN_POLICY_WARN_PASSWORD' -> true, 'currentFormObject' -> [email protected]]], [[email protected] flow = 'customer-search-flow', state = 'securityQuestionsDisplayView', scope = map['hasFee' -> false, 'username' -> '---', 'state' -> 'securityQuestionsDisplay', 'customerSearchForm' -> [email protected], 'currentFormObject' -> [email protected], 'scrollForm' -> [email protected], 'viewScope' -> map[[empty]]]]]]' into repository>
    <2010-03-11 10:21:04,441> DEBUG <> org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository.putFlowExecution() <Adding snapshot to group with id 8>
    <2010-03-11 10:21:04,441> DEBUG <> org.springframework.webflow.conversation.impl.SessionBindingConversationManager.putAttribute() <Putting conversation attribute 'scope' with value map['flashScope' -> map['messagesMemento' -> map[[null] -> list[[empty]]], 'org.springframework.validation.BindingResult.customerSearchForm' -> org.springframework.validation.BeanPropertyBindingResult: 0 errors, 'org.springframework.validation.BindingResult.currentFormObject' -> org.springframework.validation.BeanPropertyBindingResult: 0 errors], 'accountHolderCode' -> '00003529', 'lastAccessedBy' -> '---', 'institutionCode' -> 'IDT', 'SECURITY_QUESTIONS_KEY' -> [email protected][************8068,0]], 'lastAccessedOn' -> Thu Mar 11 10:17:31 GMT 2010, 'callNote' -> [email protected][9397]]]>
    <2010-03-11 10:21:04,441> DEBUG <> org.springframework.webflow.conversation.impl.SessionBindingConversationManager.unlock() <Unlocking conversation 3>
    <2010-03-11 10:21:04,441> DEBUG <> org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.sendFlowExecutionRedirect() <Sending flow execution redirect to '/RELEASE_PANorama/flow.htm?_flowId=login-policy-flow&_flowExecutionKey=e3s8'>
    <2010-03-11 10:21:04,472> DEBUG <> org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping.getHandlerInternal() <Mapping [/flow.htm] to handler '[email protected]'>
    <2010-03-11 10:21:04,472> DEBUG <> org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution() <Resuming flow execution with key 'e3s8>
    <2010-03-11 10:21:04,472> DEBUG <> org.springframework.webflow.conversation.impl.SessionBindingConversationManager.lock() <Locking conversation 3>
    <2010-03-11 10:21:04,472> DEBUG <> org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository.getFlowExecution() <Getting flow execution with key 'e3s8'>
    <2010-03-11 10:21:04,472> DEBUG <> org.springframework.webflow.definition.registry.FlowDefinitionRegistryImpl.getFlowDefinition() <Getting FlowDefinition with id 'login-policy-flow'>
    <2010-03-11 10:21:04,504> DEBUG <> org.springframework.webflow.conversation.impl.SessionBindingConversationManager.unlock() <Unlocking conversation 3>
    <2010-03-11 10:21:04,504> DEBUG <> org.springframework.web.servlet.handler.SimpleMappingExceptionResolver.doResolveException() <Resolving exception from handler [[email protected]]: org.springframework.webflow.execution.repository.FlowExecutionRestorationFailureException: A problem occurred restoring the flow execution with key 'e3s8'>
    <2010-03-11 10:21:04,504> DEBUG <> org.springframework.web.servlet.handler.SimpleMappingExceptionResolver.findMatchingViewName() <Resolving to view 'start.tile' for exception of type [org.springframework.webflow.execution.repository.FlowExecutionRestorationFailureException], based on exception mapping [java.lang.RuntimeException]>
    <2010-03-11 10:21:04,504> DEBUG <> org.springframework.web.servlet.handler.SimpleMappingExceptionResolver.getModelAndView() <Exposing Exception as model attribute 'exception'>
    <2010-03-11 10:21:04,504> WARN  <> org.springframework.webflow.mvc.view.FlowAjaxTilesView.renderMergedOutputModel() <An Ajax request was detected, but no fragments were specified to be re-rendered.  Falling back to full page render.  This can cause unpredictable results when processing the ajax response on the client.>
    <2010-03-11 10:21:04,504> DEBUG <> org.springframework.webflow.mvc.view.FlowAjaxTilesView.exposeModelAsRequestAttributes() <Added model object 'exception' of type [org.springframework.webflow.execution.repository.FlowExecutionRestorationFailureException] to request in view with name 'start.tile'>
    Any ideas/suggestions?


  • #2
    Originally posted by jcervera View Post

    I wonder whether there are known incompatibilities between SWF2.0.8 and Java6 (6.0.18).
    I haven't faced any issues related to JDK version itself. I'm running SWF 2.0.8 on JDK 1.6.0_17 and it works fine.



    • #3

      We've debugged this further, to find out what was causing it.

      First we found that the originator of the exception was at:
      org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshot.unmarshal(ClassLoader classLoader)
      The above produced the following Exception (which would end up being wrapped with the one I mentioned at the top)
      during the deserialize() call, where it goes to the ClassNotFoundException catch, not sure why yet. The explanation in the catch says:
      ClassNotFoundException thrown deserializing the flow execution stored in this snapshot -- This should not happen! Make sure there are no classloader issues. For example, perhaps the Web Flow system is being loaded by a classloader that is a parent of the classloader loading application classes?
      The issue ended up being produced while trying to deserialize a business object that was on flow scope. After playing with every field of the object we narrowed the issue down to an int[][]. We changed that for an Integer[][] and all started working fine.

      The above makes me believe that there is a problem with Sun's Java 6 and deserialization of int[][]. We had the issue with 6.0.18 and 6.0.7. We don't have this problem with any of the Java 5 versions we tried (including several Sun's and IBM's versions)

      This is definitely a weird one