[
https://issues.jboss.org/browse/JBSEAM-4800?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Marek Novotny closed JBSEAM-4800.
---------------------------------
Assignee: Marek Novotny
Fix Version/s: 2.3.0.ALPHA
(was: 2.3.0.BETA1)
Resolution: Done
back ported the fix from EAP 5.1.1
> s:link does not work on failover in a clustered environment
> -----------------------------------------------------------
>
> Key: JBSEAM-4800
> URL: https://issues.jboss.org/browse/JBSEAM-4800
> Project: Seam 2
> Issue Type: Bug
> Components: JSF Integration
> Affects Versions: 2.2.1.Final
> Environment: EAP 5.1
> Seam 2.2.2.EAP5
> Reporter: Samuel Mendenhall
> Assignee: Marek Novotny
> Fix For: 2.3.0.ALPHA
>
>
> When clicking on an s:link after a node has been taken down, the exception
> below is thrown. The s:link will only work if the page is refreshed first so
> it is served by the new JBoss instance, but that negates transparent failover.
> Method of reproducing:
> * Two EAP 5.1 nodes fronted with mod_jk. No firewall, sticky sessions +
> session replication definitely enabled.
> * JBDS Seam generated ear + a simple @Clustered EJB3 which has a method that
> takes a parameter and prints the EL parametrized text (I don't think EL
> parametrization is relevant here)
> * Click on the s:link on the page, it invokes fine, go back in the browser.
> Shutdown the active JBoss instance. Click the s:link again which is
> redirected to the 2nd JBoss now and receive:
> 14:17:42,995 ERROR [Exceptions] handled and logged exception
> java.lang.IllegalStateException: Unable to read view /home.xhtml to execute
> action "#{someComponent.printText('Hello World')}"
> at
> org.jboss.seam.navigation.SafeActions.isActionSafe(SafeActions.java:67)
> at org.jboss.seam.navigation.Pages.callAction(Pages.java:699)
> at org.jboss.seam.navigation.Pages.preRender(Pages.java:331)
> at
> org.jboss.seam.jsf.SeamPhaseListener.preRenderPage(SeamPhaseListener.java:561)
> at
> org.jboss.seam.jsf.SeamPhaseListener.beforeRenderResponse(SeamPhaseListener.java:472)
> at
> org.jboss.seam.jsf.SeamPhaseListener.beforeServletPhase(SeamPhaseListener.java:148)
> at
> org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:118)
> SafeActions.java:67 isn't so telling:
> ===================
> String viewId = id.substring(0, loc);
> String action = "\"#{" + id.substring(loc+1) + "}\"";
>
> InputStream is =
> FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream(viewId);
> if (is==null) throw new IllegalStateException("Unable to read view " + "/" +
> viewId + " to execute action " + action);
> ===================
> The code says the InputStream is null on failover, so the
> getResourceAsStream(viewId) failed to return anything.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
seam-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/seam-issues