Hello guys, I'm a bit confused. Does #{identity.login} start a long running conversation? I'm just asking because after successfully logging in, my User entity bean which I have outjected in the Authenticator.authenticate() method and injected in my conversational-scoped Stateful EJB still lives after every other click.
I have no @Begin/@End annotations declared myself. Here's the beginning of my EJB: @Stateful | @Scope(ScopeType.CONVERSATION) | @Name("userAction") | public class UserActionImpl implements UserAction | { | @Logger private Log log; | | @In | FacesMessages facesMessages; | | @In(value="entityManager") | private EntityManager em; | | @In(required=false) @Out(required=false) | private User user; | | [...] And here's my Authenticator class: @Name("authenticator") | public class Authenticator | { | @Logger Log log; | | @In | private Identity identity; | | @In(value="entityManager") | private EntityManager entityManager; | | @Out(required=false) | private User user; | | public boolean authenticate() | { | log.info("authenticating #0", identity.getUsername()); | | //write your authentication logic here, | //return true if the authentication was | //successful, false otherwise | | try | { | user = (User) entityManager.createQuery( | "from User where username = :username and password = :password") | .setParameter("username", identity.getUsername()) | .setParameter("password", identity.getPassword()) | .getSingleResult(); | | if( user.getRoles() != null ) | { | for( Role role : user.getRoles() ) | identity.addRole(role.getName()); | } | | //FacesMessages.instance().add("Successfully authenticated #0", identity.getUsername()); | log.info("Successfully authenticated #0", identity.getUsername()); | return true; | } | catch( NoResultException e ) | { | //FacesMessages.instance().add("Invalid username/password"); | log.info("authentication of #0 failed.", identity.getUsername()); | return false; | } | catch( Exception e ) | { | FacesMessages.instance().add("Unexpected error occurred."); | log.error("Unexpected error occurred", e); | return false; | } | } | } Like you can see: it's just out- and injecting the User which I expect to live for only one cycle (when no long running conversation exists). But I can click on my 'show-user-details' form as many times as I want and - magic - every other time the user's properties are displayed. Don't misunderstand me, this is exactly the behaviour I want but I thought I would have to start a long running conversation manually. Can someone explain that 'magic' to me? Thanks i.a., Mark View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4021943#4021943 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4021943 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user