Hi All,

I have made setup of JCS in my Linux environment and trying to make a POC using 
Remote Cache.

My System Setup:


*         RMI Server : Running on 10.55.164.215 (using RMI Start up Servlet)

*         Client-1: Running on box 10.55.164.215 on same machine where serer is 
running

*         Client-2: Running on box 10.55.164.45


My Configuration Files:

*         Server Configuration


# ----------------------------------------------
# Registry used to register and provide the
# IRemoteCacheService service.
registry.host=10.55.164.215
registry.port=1102
# call back port to local caches.
remote.cache.service.port=1102
# rmi socket factory timeout
remote.cache.rmiSocketFactoryTimeoutMillis=5000
# cluster setting
remote.cluster.LocalClusterConsistency=false
remote.cluster.AllowClusterGet=false
# ----------------------------------------------

# DEFAULT CACHE REGION
jcs.default=
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=1000
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache

# PRE-DEFINED CACHE REGIONS
jcs.region.userCache=
jcs.region.userCache.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.userCache.cacheattributes.MaxObjects=1000
jcs.region.userCache.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.userCache.cacheattributes.UseMemoryShrinker=false
jcs.region.userCache.cacheattributes.MaxMemoryIdleTimeSeconds=3600
jcs.region.userCache.cacheattributes.ShrinkerIntervalSeconds=60
jcs.region.userCache.cacheattributes.MaxSpoolPerRun=500
jcs.region.userCache.elementattributes=org.apache.jcs.engine.ElementAttributes
jcs.region.userCache.elementattributes.IsEternal=false






*         Client-1 and Client-2  Configuration at separate boxes - See the 
above in System Setup Section
# DEFAULT CACHE REGION
# sets the default aux value for any non configured caches
jcs.default=RC
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=1000
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.default.elementattributes.IsEternal=false
jcs.default.elementattributes.MaxLifeSeconds=3600
jcs.default.elementattributes.IdleTime=1800
jcs.default.elementattributes.IsSpool=true
jcs.default.elementattributes.IsRemote=true
jcs.default.elementattributes.IsLateral=false

# CACHE REGIONS AVAILABLE

# Regions preconfigured for caching
jcs.region.userCache=RC
jcs.region.userCache.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.userCache.cacheattributes.MaxObjects=1200
jcs.region.userCache.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.userCache.elementattributes.IsEternal=false
jcs.region.userCache.elementattributes.MaxLifeSeconds=7200
jcs.region.userCache.elementattributes.IdleTime=1800
jcs.region.userCache.elementattributes.IsSpool=true
jcs.region.userCache.elementattributes.IsRemote=true
jcs.region.userCache.elementattributes.IsLateral=false

# Remote RMI Cache set up to failover
# This remote client does not receive
jcs.auxiliary.RC=org.apache.jcs.auxiliary.remote.RemoteCacheFactory
jcs.auxiliary.RC.attributes=org.apache.jcs.auxiliary.remote.RemoteCacheAttributes
jcs.auxiliary.RC.attributes.FailoverServers=10.55.164.215:1102
jcs.auxiliary.RC.attributes.LocalPort=1202
jcs.auxiliary.RC.attributes.RemoveUponRemotePut=true
jcs.auxiliary.RC.attributes.RmiSocketFactoryTimeoutMillis=5000
jcs.auxiliary.RC.attributes.GetOnly=false
jcs.auxiliary.RC.attributes.Receive=true







Client Test Programs:

Input parameters  while running client-1 : java com.brightsky.util.JCSTest  
/cache-client1.ccf
Input parameters  while running client-2 : java com.brightsky.util.JCSTest  
/cache.ccf-client1


package com.brightsky.util;
import java.util.Date;

/*
 * This code is property of BrightSky, Inc. Use, duplication and disclosure
 * in any form without permission of copyright holder is prohibited.
 *
 * (C) Copyright BrightSky, Inc. 2011. All rights reserved.
 */

/**
 * @author nverma
 *
 */
public class JCSTest {
    public static void main(String a[]) throws InterruptedException {

        System.out.println("\n 
=======================================================================================\n"
 );
        System.out.println("\n =================================== QA Node - 
"+a[0]+ "================================\n" );
        System.out.println("\n 
=======================================================================================\n"
 );

        System.out.println("\n ----------------------------------Initializing 
JCS....\n" );


        CacheManager cm = CacheManager.getInstance(a[0]);

        System.out.println("\n ----------------------------------Initialized 
Successfully.\n" );

        int userId = 1;
        int notificationCount = 10 ;
        int loopCount = 5 ;
        int threadSleepSec = 2 ;


        userId = 1;
        notificationCount =10;
        loopCount =5;
        threadSleepSec =2;

        UserCacheObj userObject;
        // If no, then write and fetch in loop
        // if yes, no write only fetch object of passed userid
        if("no".equals(a[6])){

            // Create Object
            userObject = new UserCacheObj();
            userObject.setUserId(userId);
            userObject.setNotificationCount(notificationCount);

            System.out.println("\n ----------------------------------Storing 
object into cache....\n" );
            // Store the object into cache
            cm.storeUserbj(userObject);

            System.out.println("\n ----------------------------------Stored 
Successfully.\n" );

        }


        System.out.println("\n ---------------Starting loop to fetch and 
increment notification count for userId ["+userId+"] .....\n" );

        for(int i=1; i<=loopCount; i++){

            System.out.println("\n -----------[Attemp : "+i+"] \n" );

            Date date = new Date();

            userObject = cm.getUserObj(userId);

            System.out.println("\n ----------- ["+date+"] Fetched Notification 
Count = "+userObject.getNotificationCount());

            int notificationCnt = userObject.getNotificationCount() + 1;

            userObject.setNotificationCount(notificationCnt);

            date = new Date();

            System.out.println("\n ----------- Incremented notification count 
["+notificationCnt+"] ");

            cm.storeUserbj(userObject);

            System.out.println("\n ----------- ... ["+date+"] Pushed to updated 
object ");


            Thread.sleep(1000 * threadSleepSec);

        }

        System.out.println("\n ----------- Loop End.   !!!! Good Bye !!!!\n" );

    }
}



Question and Problem:

When I put any object from either client-1 or client-2 then server shows log 
that it is creating listener for corresponding clients. And event is put 
successfully.

Server logs on Client-1 Run

2011-12-25 15:46:12,801 INFO  
[org.apache.jcs.auxiliary.remote.server.RemoteCacheServer] (RMI TCP 
Connection(78)-10.55.164.145) adding vm listener under new id = [46], 
listenerAddress [127.0.0.1]
2011-12-25 15:46:12,801 INFO  
[org.apache.jcs.auxiliary.remote.server.RemoteCacheServer] (RMI TCP 
Connection(78)-10.55.164.145) Region userCache's listener size = 2

Server logs on Client-2 Run

2011-12-25 16:04:11,509 INFO  
[org.apache.jcs.auxiliary.remote.server.RemoteCacheServer] (RMI TCP 
Connection(91)-10.55.164.215) adding vm listener under new id = [48], 
listenerAddress [10.55.164.215]
2011-12-25 16:04:11,509 INFO  
[org.apache.jcs.auxiliary.remote.server.RemoteCacheServer] (RMI TCP 
Connection(91)-10.55.164.215) Region userCache's listener size = 3


Scenario-1:
When I put object from client-2 and access it in client-1, it is fetched 
successfully. But when I update it in client-1 and pushed it again then clien-2 
does not access the object with same ID and null pointer exception comes. Event 
when I try to access it again with client-1 again null pointer exception comes. 
Need to confirm why object is not accessible after updating by any of the 
client?

Scenario-2:
When I put object from client-1 and access it in client-2, it never fetched. 
Need to confirm why client-2 never access the object put by the client-1? Where 
client-1 access once if client-2 puts.


Please help/guide me to resolve these issues.

Thanks & Regards,
Narendra Verma


________________________________
NOTICE TO RECIPIENT: THIS E-MAIL (INCLUDING ANY ATTACHMENTS) IS MEANT FOR ONLY 
THE INTENDED RECIPIENT OF THE TRANSMISSION, MAY CONTAIN CONFIDENTIAL 
INFORMATION, AND IS PROTECTED BY LAW. IF YOU RECEIVED THIS E-MAIL IN ERROR, 
PLEASE IMMEDIATELY NOTIFY THE SENDER OF THE ERROR BY RETURN E-MAIL, DELETE THIS 
COMMUNICATION AND SHRED ANY ATTACHMENTS. UNAUTHORIZED REVIEW, USE, 
DISSEMINATION, DISTRIBUTION, COPYING OR TAKING OF ANY ACTION BASED ON THIS 
COMMUNICATION IS STRICTLY PROHIBITED.

Reply via email to