[jboss-user] [JBossCache] - username and session caching

anwar83 do-not-reply at jboss.com
Mon Nov 20 21:28:38 EST 2006


Hi, for your information, I've done a very simple/basic caching using jbosscache about 5 months ago and left it since then. In what have been done, I'm accessing a jbosscache(Mbean) and put a user session id in it. The article that I'm following is here

http://javaboutique.internet.com/tutorials/docaching/index-3.html

What happen is the data is not shared and each user have their own unique session id, which is exactly what I want it to be. I use JbossAS 4.0.4RC2 or 4.0.2 that time and maybe JbossCache 1.3(can't remember well, including the setting).

However when i tried it now with JbossAS 4.0.5 and Jboss 1.4, It doesn't work anymore. Instead the data that being put into cache will be overrided by a data from a second user. So now a first user will get a second user's session id, not his own. 

The code use to put and get the data from jboss cache is as follow



  | 
  | private Option option = new Option();
  | private Fqn fqn =new Fqn("/user/session");
  | private Map<String, String> map = new HashMap<String, String>();
  | private TreeCacheMBean cache;
  | 
  | private TreeCacheMBean getTreeCacheMBean() {
  | 
  | 		if (cache == null) {
  | 			try {
  | 				log.info("TreeCacheMBean is null");
  | 
  | 				cache = (TreeCacheMBean) MBeanProxyExt.create(
  | 						TreeCacheMBean.class,	
  | 				          "jboss.cache:service=TomcatClusteringCache", server);
  | 			
  | 			} catch (MalformedObjectNameException e) {
  | 				// TODO Auto-generated catch block
  | 				e.printStackTrace();
  | 			}
  | 		}
  | 		return cache;
  | }
  | 
  | public void insertSession(String sessionID, String userId) throws Exception {              
  |                 option.setCacheModeLocal(true);		
  | 		map.put("userId", userId);				
  | 		cache = getTreeCacheMBean();
  | 		cache.put(fqn,"sessionId", sessionId, option);
  |                
  | 		log.info("End input into cache");
  | }
  | 
  | 
  | public String getSession() throws Exception {
  | 		String session = "";
  | 		cache = getTreeCacheMBean();		
  | 		option.setCacheModeLocal(true);
  | 		session = (String) cache.get(fqn,"sessionId",option);
  | 		return session;
  | }
  | 

I try to search in forum and found this 

http://jboss.org/index.html?module=bb&op=viewtopic&t=86054

which is very-very similar with what I want to do. The question that puzzling me is can jboss cache automatically know who is whom in concurrent access? I means if it is able make a differentiate each user access without the data being overrided by newest insertion. I want to confirm whether my first try is really working or just my mistake in doing testing. If it is able to differentiate a user, then can you point me to configuration that need to be done? I read about locking and concurrency access but not found what i need. Sorry, a newbie here.

Thanks so much,
Anwar

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3987450#3987450

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3987450



More information about the jboss-user mailing list