[jboss-user] [JBoss Seam] - Check if conversations are active before session invalidatio
rapowder
do-not-reply at jboss.com
Tue Jul 31 04:47:24 EDT 2007
I implemented a very simple script to call a logout action:
| <!-- 10 minutes timeout -->
| <script type="text/javascript" language="JavaScript"><!--
| setTimeout('Redirect()', 600000);
| function Redirect() {
| document.getElementById('tor_form:tor_button').click();
| }
| // --></script>
|
| [...]
|
| <h:form id="tor_form">
| <t:commandButton id="tor_button" style="display:none;" value="redirect" action="#{logout.logout}"/>
| </h:form>
|
|
The logout action invalidates the session and redirects to the login page:
| // Before invalidating the whole session check if other conversations
| // are running
| if(!ConversationsAgent.getInstance().activeConversationsExist()) {
| Seam.invalidateSession();
| return "login";
| }
|
| // Otherwise leave session open and just redirect to home
| else {
| ConversationsAgent.getInstance().end();
| FacesMessages.instance().add("No activity timeout occurred.");
| return "home";
| }
|
I added the if/else conditions because if I invalidate the session all active conversations (in other tabs) will be destroyed and this is not what I want. I implemented the activeConversationsExist() as it follows:
| public boolean activeConversationsExist() {
| for (ConversationEntry entry : ConversationEntries.instance().getConversationEntries()) {
| if(!entry.isEnded())
| return true;
| }
| return false;
| }
|
which is not good because it checks the whole conversation stack (including other connected clients or browsers) and not the ones related to the session I want to invalidate.
So, my question is: is there a way to check if only the session-related conversations are ended?
Thanx, cheers!
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4069064#4069064
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4069064
More information about the jboss-user
mailing list