You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jcs-users@jakarta.apache.org by Yomesh Panchal <yo...@hexaware.com> on 2003/11/25 04:18:48 UTC
Help to configure LateralTCPFactory
> Hi All,
>
> I am trying to Lateral TCP Cache. I have some questions and a problem which i am not able to solve.
>
> Questions:
> 1) cache.ccf file should be there in classpath of idividual server or jcs client who is accessing jcs.
> 2) Client hast to run on the same jvm of tomcat servers or it can be standalone java client.
>
>
>
> Problem:
>
> I am running an example with following setting. Two tomcat servers are running on two different port localhost:8080 and localhost:8090. Now i am running the example but i am getting following error:
>
> D:\Yomesh\JBProjects\Caching\classes>java com.genericbookstore.data.BookVObjMana
> ger ..\cache.ccf
> Creating cache manager from config file: ..\cache.ccf
> Nov 24, 2003 2:21:30 PM org.apache.jcs.engine.control.CompositeCacheConfigurator
> setDefaultAuxValues
> INFO: setting defaults to LTCP
> Nov 24, 2003 2:21:30 PM org.apache.jcs.engine.control.CompositeCacheConfigurator
> setDefaultCompositeCacheAttributes
> INFO: setting defaultCompositeCacheAttributes to [ useLateral = true, useRemote
> = true, useDisk = true, maxObjs = 2000 ]
> Nov 24, 2003 2:21:30 PM org.apache.jcs.engine.control.CompositeCacheConfigurator
> setDefaultElementAttributes
> INFO: setting defaultElementAttributes to [ IS_LATERAL = false, IS_SPOOL = false
> , IS_REMOTE = false, IS_ETERNAL = false, MaxLifeSeconds = 2400, IdleTime = 1800,
> CreateTime = 1069663890818, LastAccessTime = 1069663890818, getTimeToLiveSecond
> s() = 2399985, createTime = 1069663890818 ]
> Nov 24, 2003 2:21:30 PM org.apache.jcs.engine.memory.lru.LRUMemoryCache initiali
> ze
> INFO: initialized LRUMemoryCache for JCSTest$Dog
> Nov 24, 2003 2:21:30 PM org.apache.jcs.engine.control.CompositeCache <init>
> INFO: Constructed cache with name: JCSTest$Dog
> Nov 24, 2003 2:21:30 PM org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPLi
> stener$ListenerThread run
> INFO: Listening on port 1110
> Nov 24, 2003 2:21:31 PM org.apache.jcs.engine.memory.lru.LRUMemoryCache initiali
> ze
> INFO: initialized LRUMemoryCache for bookCache
> Nov 24, 2003 2:21:31 PM org.apache.jcs.engine.control.CompositeCache <init>
> INFO: Constructed cache with name: bookCache
> Nov 24, 2003 2:21:31 PM org.apache.jcs.engine.memory.lru.LRUMemoryCache initiali
> ze
> INFO: initialized LRUMemoryCache for JCSTest$Cat
> Nov 24, 2003 2:21:31 PM org.apache.jcs.engine.control.CompositeCache <init>
> INFO: Constructed cache with name: JCSTest$Cat
> Book cache is NOT null
> Nov 24, 2003 2:21:41 PM org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPSe
> nder sendAndReceive
> SEVERE: Could not open ObjectInputStream to Socket[addr=/10.1.35.167,port=8090,l
> ocalport=1929]
> java.net.SocketTimeoutException: Read timed out
> at java.net.SocketInputStream.socketRead0(Native Method)
> at java.net.SocketInputStream.read(SocketInputStream.java:129)
> at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java
> :2150)
> at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream
> .java:2163)
> at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputS
> tream.java:2631)
> at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:734
> )
> at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253)
> at org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPSender.sendAndR
> eceive(LateralTCPSender.java:229)
> at org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPService.get(Lat
> eralTCPService.java:196)
> at org.apache.jcs.auxiliary.lateral.LateralCache.get(LateralCache.java:1
> 25)
> at org.apache.jcs.auxiliary.lateral.LateralCacheNoWait.get(LateralCacheN
> oWait.java:76)
> at org.apache.jcs.auxiliary.lateral.LateralCacheNoWaitFacade.get(Lateral
> CacheNoWaitFacade.java:74)
> at org.apache.jcs.engine.control.CompositeCache.get(CompositeCache.java:>
> 533)
> at org.apache.jcs.engine.control.CompositeCache.get(CompositeCache.java:
> 440)
> at org.apache.jcs.access.CacheAccess.get(CacheAccess.java:236)
> at com.genericbookstore.data.BookVObjManager.getBookVObj(BookVObjManager
> .java:85)
> at com.genericbookstore.data.BookVObjManager.getBookVObj(BookVObjManager
> .java:70)
> at com.genericbookstore.data.BookVObjManager.main(BookVObjManager.java:2
> 03)
> vObj is null. loading vObj
> Author name is Yomesh
> Removing vObj
> Nov 24, 2003 2:21:52 PM org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPSe
> nder sendAndReceive
> SEVERE: Could not open ObjectInputStream to Socket[addr=/10.1.35.167,port=8090,l
> ocalport=1929]
> java.net.SocketTimeoutException: Read timed out
> at java.net.SocketInputStream.socketRead0(Native Method)
> at java.net.SocketInputStream.read(SocketInputStream.java:129)
> at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java
> :2150)
> at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream
> .java:2163)
> at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputS
> tream.java:2631)
> at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:734
> )
> at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253)
> at org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPSender.sendAndR
> eceive(LateralTCPSender.java:229)
> at org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPService.get(Lat
> eralTCPService.java:196)
> at org.apache.jcs.auxiliary.lateral.LateralCache.get(LateralCache.java:1
> 25)
> at org.apache.jcs.auxiliary.lateral.LateralCacheNoWait.get(LateralCacheN
> oWait.java:76)
> at org.apache.jcs.auxiliary.lateral.LateralCacheNoWaitFacade.get(Lateral
> CacheNoWaitFacade.java:74)
> at org.apache.jcs.engine.control.CompositeCache.get(CompositeCache.java:
> 533)
> at org.apache.jcs.engine.control.CompositeCache.get(CompositeCache.java:
> 440)
> at org.apache.jcs.access.CacheAccess.get(CacheAccess.java:236)
> at com.genericbookstore.data.BookVObjManager.storeBookVObj(BookVObjManag
> er.java:151)
> at com.genericbookstore.data.BookVObjManager.main(BookVObjManager.java:2
> 10)
> vObj is successfuly removed
> Author name is Sachin
> Author name has already changed
> .
>
>
>
> The cache.ccf file
>
> # DEFAULT CACHE REGION
>
> # sets the default aux value for any non configured caches
> jcs.default=LTCP
> jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
> jcs.default.cacheattributes.MaxObjects=2000
> jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
> jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes
> jcs.default.elementattributes.IsEternal=false
> jcs.default.elementattributes.MaxLifeSeconds=2400
> jcs.default.elementattributes.IdleTime=1800
> jcs.default.elementattributes.IsSpool=false
> jcs.default.elementattributes.IsRemote=false
> jcs.default.elementattributes.IsLateral=false
>
>
> jcs.auxiliary.LTCP=org.apache.jcs.auxiliary.lateral.LateralCacheFactory
> jcs.auxiliary.LTCP.attributes=org.apache.jcs.auxiliary.lateral.LateralCacheAttributes
> jcs.auxiliary.LTCP.attributes.TransmissionTypeName=TCP
> jcs.auxiliary.LTCP.attributes.TcpServers=10.1.35.167:8090,10.1.35.167:8080
> jcs.auxiliary.LTCP.attributes.TcpListenerPort=1110
> jcs.auxiliary.LTCP.attributes.PutOnlyMode=false
>
>
> #Book Cache
> jcs.region.bookCache=LTCP
> jcs.region.bookCache.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
> jcs.region.bookCache.cacheattributes.MaxObjects=4000
> jcs.region.bookCache.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
> jcs.region.bookCache.cacheattributes.UseMemoryShrinker=true
> jcs.region.bookCache.cacheattributes.MaxMemoryIdleTimeSeconds=3600>
> jcs.region.bookCache.cacheattributes.ShrinkerIntervalSeconds=600
> jcs.region.bookCache.elementattributes=org.apache.jcs.engine.ElementAttributes
> jcs.region.bookCache.elementattributes.IsEternal=false
> jcs.region.bookCache.elementattributes.MaxLifeSeconds=2400
> jcs.region.bookCache.elementattributes.IdleTime=180
> jcs.region.bookCache.elementattributes.IsSpool=false
> jcs.region.bookCache.elementattributes.IsRemote=false
> jcs.region.bookCache.elementattributes.IsLateral=true
>
> ===============
>
> The code is
>
> // java com.genericbookstore.data.BookVObjManager
> package com.genericbookstore.data;
>
> import org.apache.jcs.JCS;
> // in case we want to set some special behavior
> import org.apache.jcs.engine.behavior.IElementAttributes;
> import org.apache.jcs.engine.control.CompositeCacheManager;
> import java.io.*;
> import java.util.*;
>
> /**
> * <p>Title: </p>
> * <p>Description: </p>
> * <p>Copyright: Copyright (c) 2003</p>
> * <p>Company: </p>
> * @author not attributable
> * @version 1.0
> */
>
> public class BookVObjManager {
> private static BookVObjManager instance;
> private static int checkedOut = 0;
> private static JCS bookCache;
>
> private BookVObjManager() {
> try {
> bookCache = JCS.getInstance("bookCache");
> if (bookCache == null) {
> System.out.println("Book cache is null");
> }
> else {
> System.out.println("Book cache is NOT null");
> }
>
> }
> catch (Exception e) {
> // Handle cache region initialization failure
> System.out.println("Error in creating object");
> e.printStackTrace();
> }
>
> // Do other initialization that may be necessary, such as getting
> // references to any data access classes we may need to populate
> // value objects later
> }
>
> /**
> * Singleton access point to the manager.
> */
> public static BookVObjManager getInstance() {
> if (instance == null) {
> synchronized (BookVObjManager.class) {
> if (instance == null) {
> instance = new BookVObjManager();
> }
> }
> }
>
> synchronized (instance) {
> instance.checkedOut++;
> }
>
> return instance;
> }
>
> /**
> * Retrieves a BookVObj. Default to look in the cache.
> */
> public BookVObj getBookVObj(int id) {
> return getBookVObj(id, true);
> }
>
> /**
> * Retrieves a BookVObj. Second argument decides whether to look
> * in the cache. Returns a new value object if one can't be
> * loaded from the database. Database cache synchronization is
> * handled by removing cache elements upon modification.
> */
> public BookVObj getBookVObj(int id, boolean fromCache) {
> BookVObj vObj = null;
>
> // First, if requested, attempt to load from cache
>
> if (fromCache) {
> vObj = (BookVObj) bookCache.get("BookVObj" + id);
> }
>
> // Either fromCache was false or the object was not found, so
> // call loadBookVObj to create it
>
> if (vObj == null) {
> System.out.println("vObj is null. loading vObj");
> vObj = loadBookVObj(id);
>
> }
>
> return vObj;
> }
>
> /**
> * Creates a BookVObj based on the id of the BOOK table. Data
> * access could be direct JDBC, some or mapping tool, or an EJB.
> */
> public BookVObj loadBookVObj(int id) {
> BookVObj vObj = new BookVObj();
>
> vObj.bookID = id;
> vObj.author = "Yomesh";
>
> try {
> boolean found = false;
>
> // load the data and set the rest of the fields
> // set found to true if it was found
>
> found = true;
>
> // cache the value object if found
>
> if (found) {
> // could use the defaults like this
> // bookCache.put( "BookVObj" + id, vObj );
> // or specify special characteristics
>
> // put to cache
>
> bookCache.put("BookVObj" + id, vObj);
> }
>
> }
> catch (Exception e) > {
> // Handle failure putting object to cache
> }
>
> return vObj;
> }
>
> /**
> * Stores BookVObj's in database. Clears old items and caches
> * new.
> */
> public int storeBookVObj(BookVObj vObj) {
> try {
> // since any cached data is no longer valid, we should
> // remove the item from the cache if it an update.
>
> if (vObj.bookID != 0) {
> bookCache.remove("BookVObj" + vObj.bookID);
> System.out.println("Removing vObj");
>
> BookVObj aObj = (BookVObj) bookCache.get("BookVObj" + vObj.bookID);
> if (aObj == null) {
> System.out.println("vObj is successfuly removed");
> // put the new object in the cache
> bookCache.put("BookVObj" + vObj.bookID, vObj);
> }
> else {
> System.out.println("Could not remove vObj");
> }
> }
>
> }
> catch (Exception e) {
> // Handle failure removing object or putting object to cache.
> }
> return vObj.bookID;
> }
>
> public static void configure(String propFile) {
> System.out.println("Creating cache manager from config file: " + propFile);
> Properties props = new Properties();
>
> InputStream is = null;
> try {
> //Check to see if we can get the file in propFile from the claspath.
>
> is = new FileInputStream(new File(propFile));
> props.load(is);
>
> }
> catch (IOException ex) {
> System.out.println("Failed to load properties");
> ex.printStackTrace();
> throw new IllegalStateException(ex.getMessage());
> }
> finally {
> try {
> is.close();
> }
> catch (Exception ignore) {
> // Ignored
> }
> }
>
> CompositeCacheManager cm = CompositeCacheManager.getUnconfiguredInstance();
> cm.configure(props);
> }
>
> public static void main(String args[]) {
> configure(args[0]);
>
> BookVObjManager mb = BookVObjManager.getInstance();
> BookVObj obj = mb.getBookVObj(20);
> System.out.println("Author name is " + obj.author);
> if (obj.author.equals("Sachin")) {
> System.out.println("Author name has already changed");
> }
> else {
> obj.author = "Sachin";
> mb.storeBookVObj(obj);
> }
> obj = mb.getBookVObj(20);
> System.out.println("Author name is " + obj.author);
> if (obj.author.equals("Sachin")) {
> System.out.println("Author name has already changed");
> }
> else {
> System.out.println("Author name has not changed");
> }
>
> }
> }
>
> ======
> The data class is
>
> package com.genericbookstore.data;
>
> import java.io.Serializable;
> import java.util.Date;
> /**
> * <p>Title: </p>
> * <p>Description: </p>
> * <p>Copyright: Copyright (c) 2003</p>
> * <p>Company: </p>
> * @author not attributable
> * @version 1.0
> */
>
> public class BookVObj implements Serializable
> {
> public int bookID = 0;
> public String title;
> public String author;
> public String ISBN;
> public String price;
> public Date publishDate;
>
> public BookVObj()
> {
> }
> }
> =====================
---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-jcs-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-jcs-user-help@jakarta.apache.org