[jboss-jira] [JBoss JIRA] (AS7-6428) Using Session Scope CDI bean does not work in a HttpSessionListener

Remy Maucherat (JIRA) jira-events at lists.jboss.org
Mon Mar 11 11:02:42 EDT 2013


    [ https://issues.jboss.org/browse/AS7-6428?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12760279#comment-12760279 ] 

Remy Maucherat commented on AS7-6428:
-------------------------------------

If I understand correctly, this is about returning the session object for getSession(false) while getSession(true) has not finished. The "correct" behavior is not really specified, and I don't find it so logical ...

The behavior is the same in Tomcat, and would probably need to be validated by the Servlet EG (personally, I am not convinced).
                
> Using Session Scope CDI bean does not work in a HttpSessionListener
> -------------------------------------------------------------------
>
>                 Key: AS7-6428
>                 URL: https://issues.jboss.org/browse/AS7-6428
>             Project: Application Server 7
>          Issue Type: Bug
>          Components: CDI / Weld
>    Affects Versions: 7.1.1.Final
>         Environment: linux 64bits, win7 64 bits
>            Reporter: nicolas marchais
>            Assignee: Remy Maucherat
>             Fix For: No Release
>
>
> JBoss AS 7.1.x has a bug with using session bean scope in a HttpSessionListener.
> When i inject a session scope bean in a HttpSessionListener and i try to populate attribute in sessionCreated() method many HttpSession are created by JBoss AS. Is it normal the a web server create many Http session for the same request ?
> Normally, this behaviour should work. See : http://docs.jboss.org/cdi/api/1.1-PRD/javax/enterprise/context/SessionScoped.html
> I did a light Web Project to explain the problem with 1 JSP, 1 SessionScope bean and 1 HttpSessionListener.
> Here is the code.
> JSP page :
> <%@ page language="java" contentType="text/html; charset=UTF-8"
>     pageEncoding="UTF-8"%>
> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
> <title>Insert title here</title>
> </head>
> <body>
> </body>
> </html>
> SessionScope bean :
> @Named
> @SessionScoped
> public class UserState implements Serializable {
> 	private int state;
> 	public int getState() {
> 		return state;
> 	}
> 	public void setState(int state) {
> 		this.state = state;
> 	}
> }
> HttpSessionListener :
> @WebListener
> public class SessionListener implements HttpSessionListener {
> 	@Inject private UserState userState;
> 	
> 	@Override
> 	public void sessionCreated(HttpSessionEvent event) {
> 		System.out.println("New HTTP Session created : " + event.getSession().getId());
> 		userState.setState(2);
> 	}
> 	@Override
> 	public void sessionDestroyed(HttpSessionEvent event) {}
> }
> After execution, you can read in the console at least 2 http session creation like this :
> New HTTP Session created : zvlF6vGLP1AaXM-rzFU02wAJ.undefined
> New HTTP Session created : TlrmmA8Eu4v32SHDT0QBBZza.undefined
> The first session seams to be the one which is used by the client. There is one more problem : The polutated attributes of the session scope bean are ignored after HttpSessionListener execution. At the end all session scope attributes are null. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list