HI,
I'm using JBOSS 4.0.4GA. To demonstrate my question below I've done a brand new install of jboss.
I thought that no state at all was kept in a stateless session bean between lookups - and is is really possible to share a stateless session bean across sessions!
Take a look at this bean:
package com.jaboj.mm.dao;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
public class LocationDAO implements LocationDAOLocal {
@PersistenceContext(unitName = "MM")
private EntityManager em;
private int count = 0;
public LocationDAO() {
count = 0;
}
public String getHello() {
count++;
System.out.println("COUNT: " + count);
return "hello: " + count;
}
}
It's quite simple. Everytime hello() is called, count is increased by one. So, I would expect, that the first time I invoke hello() after a bean lookup, "hello: 1" is returned. But that isn't allway the case.
I use the following code to lookup the sessionbean, from a test servlet.
---
InitialContext ctx = new InitialContext();
LocationDAOLocal bean =
(LocationDAOLocal)ctx.lookup("mm2007/LocationDAO/local");
out.print(bean.getHello());
--
When using this method to lookup the stateless session bean, the beans sometime get reused - even accross sessions! I really don't understand why it is possible to get the return values "hello: 2", "hello: 3", ... etc. from the session bean, on the first call after lookup!
Below I've pasted the console-output after I've invoked the servlet 3 times from IE and Firefox - to demonstrate that the session beans also are shared accross sessions!!!
22:46:09,763 INFO [STDOUT] COUNT: 1 (IE)
22:46:11,235 INFO [STDOUT] COUNT: 2 (IE)
22:46:15,591 INFO [STDOUT] COUNT: 3 (FIREFOX)
What am I doing wrong - this can't be real?
Regards
Jacob