All, I've searched everywhere trying to find a definitive answer to my questions, but have come up empty. My apologizes if these questions have already been posted and answered.
Let me first describe my environment... We have two physical W2K AdvServ servers, WSP01 = 10.75.91.82; WSP02 = 10.71.91.83. Each physical server runs two Tomcat 5.0.16 servers. Therefore, our production environment has four Tomcat servers available for use (ports 8180 and 8181 on each server). All web requests come into one of the two physical servers (WSP02), where IIS performs a "home-brewed" load balancing function and directs the request to one of the four Tomcats. We are running JDK 1.4.2_13. JCS is version 1.2.7.9.2. Concurrent is version 1.3.4. Log4j is version 1.2.14. Commons-logging is version 1.1. These jars are located in the webapp's WEB-INF\lib directory. I have a webapp deployed to each Tomcat. This webapp will employ JCS to distribute an object containing a list of rather static entries for a drop down list. This static list does get updated from time to time, but not that frequently. Because of the "home-brewed" load balancing described above, an update to this static list could occur on any one of the four Tomcat servers. When the update occurrs, the cached object is updated. Based on this and what I have read, I decided to use the Lateral TCP Cache using the UDP Discovery mechanism. I have successfully used this in our UAT environment, where we have just one physical server with two Tomcat servers (ports 8180 and 8181). Making an update to the list described above shows immediately on the web page when accessing each Tomcat server port. All is good. Now I am in the process of moving the webapp over to our production environment. It looks as if the caching is working properly on one physical server (WSP01 = 10.75.91.82), but the cache is not updated on the second physical server. The Tomcat logs on the second physical server report the following... INFO: (InitServlet.java:50) - User, U343625 (org = Consumer Banking (300)) logged in... INFO: (CompositeCacheManager.java:202) - Creating cache manager from config file: /cache.ccf INFO: (ThreadPoolManager.java:439) - thread_pool.default PoolConfiguration = useBoundary = [true] boundarySize = [2000] maximumPoolSize = [150] minimumPoolSize = [4] keepAliveTime = [300000] whenBlockedPolicy = [RUN] startUpSize = [4] INFO: (CompositeCacheConfigurator.java:158) - Setting default auxiliaries to LTCP INFO: (CompositeCacheConfigurator.java:173) - setting defaultCompositeCacheAttributes to [ useLateral = true, useRemote = true, useDisk = true, maxObjs = 1000, maxSpoolPerRun = -1, diskUsagePattern = 0 ] INFO: (CompositeCacheConfigurator.java:444) - No special ElementAttribute class defined for key [jcs.default.elementattributes], using default class. INFO: (CompositeCacheConfigurator.java:186) - setting defaultElementAttributes to [ IS_LATERAL = true, IS_SPOOL = true, IS_REMOTE = true, IS_ETERNAL = true, MaxLifeSeconds = -1, IdleTime = -1, CreateTime = 1177592582483, LastAccessTime = 1177592582483, getTimeToLiveSeconds() = -1, createTime = 1177592582483 ] INFO: (LRUMemoryCache.java:77) - initialized LRUMemoryCache for cache1 INFO: (CompositeCache.java:124) - Constructed cache with name [cache1] and cache attributes [ useLateral = true, useRemote = true, useDisk = true, maxObjs = 1000, maxSpoolPerRun = 500, diskUsagePattern = 0 ] INFO: (LateralTCPCacheFactory.java:123) - Creating listener for :1111 INFO: (LateralTCPListener.java:403) - Listening on port 1111 INFO: (UDPDiscoveryManager.java:80) - Creating service for address:port [228.5.6.9:6780] INFO: (UDPDiscoveryReceiver.java:107) - constructing listener, [228.5.6.9:6780] INFO: (LateralTCPCacheFactory.java:171) - Created UDPDiscoveryService for TCP lateral cache. INFO: (CompositeCacheConfigurator.java:249) - Parsed regions [cache1] INFO: (CompositeCacheConfigurator.java:141) - Finished configuration in 156 ms. INFO: (SetupScrHelper.java:31) - Running getSetupScrItems method INFO: (LateralTCPCacheManager.java:100) - Instance for [10.75.91.82:1110:1111] is null, creating INFO: (LateralTCPCacheManager.java:162) - Creating TCP service, lca = 10.75.91.82:1110:1111 INFO: (LateralTCPSender.java:123) - Attempting connection to [1JIPWSTWSP01.texas.chase.com] INFO: (LateralTCPCacheManager.java:246) - Created LateralCacheNoWait for [10.75.91.82:1110:1111] LateralCacheNoWait = [ LateralCacheNoWait Status = 1 cache = [ LateralCache Cache Name [cache1] cattr = [10.75.91.82:1110:1111]]] INFO: (CacheEventQueue.java:356) - Cache event queue created: CacheEventQueue [listenerId=771510704, cacheName=cache1] So, it looks like the second server was able to "discover" the first server (I'm guessing). But then, the logs show this... INFO: (LateralTCPCacheManager.java:100) - Instance for [10.75.91.83:1112:1111] is null, creating INFO: (LateralTCPCacheManager.java:162) - Creating TCP service, lca = 10.75.91.83:1112:1111 INFO: (LateralTCPSender.java:123) - Attempting connection to [1JIPWSTWSP02.texas.chase.com] ERROR: (LateralTCPService.java:74) - Could not create sender to [10.75.91.83:1112] -- Socket is null, cannot connect to 10.75.91.83:1112 ERROR: (LateralTCPCacheManager.java:180) - Failure, lateral instance will use zombie service java.io.IOException: Socket is null, cannot connect to 10.75.91.83:1112 at org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPSender.init(LateralTCPSender.java:131) at org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPSender.<init>(LateralTCPSender.java:101) at org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPService.<init>(LateralTCPService.java:62) at org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheManager.<init> LateralTCPCacheManager.java:164) at org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheManager.getInstance(LateralTCPCacheManager.java:105) at org.apache.jcs.auxiliary.lateral.socket.tcp.discovery.UDPDiscoveryReceiver$MessageHandler.run(UDPDiscoveryReceiver.java:321) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748) at java.lang.Thread.run(Thread.java:534) INFO: (LateralCacheMonitor.java:169) - LateralCacheManager.instances.size() = 2 INFO: (LateralCacheMonitor.java:185) - 1- mgr.getCaches().size() = 0 INFO: (LateralCacheMonitor.java:185) - 2- mgr.getCaches().size() = 1 INFO: (LateralCacheMonitor.java:225) - Lateral Cache No Wait not in error INFO: (CacheEventQueue.java:239) - Destroy was called after queue was destroyed. Doing nothing. Stats = Cache Event Queue Working = true Alive = false Empty = true Size = 0 INFO: (LateralTCPCacheManager.java:246) - Created LateralCacheNoWait for [10.75.91.83:1112:1111] LateralCacheNoWait = [ LateralCacheNoWait Status = 3 cache = [ LateralCache Cache Name [cache1] cattr = [10.75.91.83:1112:1111]]] And finally, the below messages repeat every so often... INFO: (LateralCacheMonitor.java:169) - LateralCacheManager.instances.size() = 3 INFO: (LateralCacheMonitor.java:185) - 1- mgr.getCaches().size() = 1 INFO: (LateralCacheMonitor.java:208) - found LateralCacheNoWait in error, LateralCacheNoWait Status = 3 cache = [ LateralCache Cache Name [cache1] cattr = [10.75.91.83:1113:1111] ] INFO: (LateralTCPSender.java:123) - Attempting connection to [1JIPWSTWSP02.texas.chase.com] ERROR: (LateralTCPService.java:74) - Could not create sender to [10.75.91.83:1113] -- Socket is null, cannot connect to 10.75.91.83:1113 ERROR: (LateralTCPCacheManager.java:305) - Can't fix Socket is null, cannot connect to 10.75.91.83:1113 ERROR: (LateralCacheRestore.java:71) - Can't fix Can't fix Socket is null, cannot connect to 10.75.91.83:1113 INFO: (LateralCacheMonitor.java:185) - 2- mgr.getCaches().size() = 1 INFO: (LateralCacheMonitor.java:208) - found LateralCacheNoWait in error, LateralCacheNoWait Status = 3 cache = [ LateralCache Cache Name [cache1] cattr = [10.75.91.83:1112:1111] ] INFO: (LateralTCPSender.java:123) - Attempting connection to [1JIPWSTWSP02.texas.chase.com] ERROR: (LateralTCPService.java:74) - Could not create sender to [10.75.91.83:1112] -- Socket is null, cannot connect to 10.75.91.83:1112 ERROR: (LateralTCPCacheManager.java:305) - Can't fix Socket is null, cannot connect to 10.75.91.83:1112 ERROR: (LateralCacheRestore.java:71) - Can't fix Can't fix Socket is null, cannot connect to 10.75.91.83:1112 INFO: (LateralCacheMonitor.java:185) - 3- mgr.getCaches().size() = 1 INFO: (LateralCacheMonitor.java:225) - Lateral Cache No Wait not in error Here are my 'auxiliary caches' section out of my cache.ccf files for each server... WSP01 (10.75.91.82:8180 (Tomcat 1))... jcs.auxiliary.LTCP=org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheFactory jcs.auxiliary.LTCP.attributes=org.apache.jcs.auxiliary.lateral.socket.tcp.TCPLateralCacheAttributes jcs.auxiliary.LTCP.attributes.TcpListenerPort=1110 jcs.auxiliary.LTCP.attributes.AllowGet=true jcs.auxiliary.LTCP.attributes.UdpDiscoveryAddr=228.5.6.9 jcs.auxiliary.LTCP.attributes.UdpDiscoveryPort=6780 jcs.auxiliary.LTCP.attributes.UdpDiscoveryEnabled=true WSP01 (10.75.91.82:8181 (Tomcat 2))... jcs.auxiliary.LTCP=org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheFactory jcs.auxiliary.LTCP.attributes=org.apache.jcs.auxiliary.lateral.socket.tcp.TCPLateralCacheAttributes jcs.auxiliary.LTCP.attributes.TcpListenerPort=1111 jcs.auxiliary.LTCP.attributes.AllowGet=true jcs.auxiliary.LTCP.attributes.UdpDiscoveryAddr=228.5.6.9 jcs.auxiliary.LTCP.attributes.UdpDiscoveryPort=6780 jcs.auxiliary.LTCP.attributes.UdpDiscoveryEnabled=true WSP02 (10.75.91.83:8180 (Tomcat 3))... jcs.auxiliary.LTCP=org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheFactory jcs.auxiliary.LTCP.attributes=org.apache.jcs.auxiliary.lateral.socket.tcp.TCPLateralCacheAttributes jcs.auxiliary.LTCP.attributes.TcpListenerPort=1112 jcs.auxiliary.LTCP.attributes.AllowGet=true jcs.auxiliary.LTCP.attributes.UdpDiscoveryAddr=228.5.6.9 jcs.auxiliary.LTCP.attributes.UdpDiscoveryPort=6780 jcs.auxiliary.LTCP.attributes.UdpDiscoveryEnabled=true WSP02 (10.75.91.83:8181 (Tomcat 4))... jcs.auxiliary.LTCP=org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheFactory jcs.auxiliary.LTCP.attributes=org.apache.jcs.auxiliary.lateral.socket.tcp.TCPLateralCacheAttributes jcs.auxiliary.LTCP.attributes.TcpListenerPort=1113 jcs.auxiliary.LTCP.attributes.AllowGet=true jcs.auxiliary.LTCP.attributes.UdpDiscoveryAddr=228.5.6.9 jcs.auxiliary.LTCP.attributes.UdpDiscoveryPort=6780 jcs.auxiliary.LTCP.attributes.UdpDiscoveryEnabled=true So, my first question is: do I have the auxiliary caches set up properly? Am I missing something? I read in the JCS docs that by using UDP Discovery, you can have the same config on multiple machines. But does that mean the TcpListenerPort is the same on all Tomcats? I'm inclined to think not, because when I set them all to say, 1110, I get JVM_BIND exceptions. Can you basically arbitrarily assign the UdpDiscoveryAddr ip and port number (netstat shows the port number as not used)? I am assuming that if my UAT config file has an UdpDiscoveryAddr ip = 228.5.6.8, then I need to set my Prod config file as I have above (UdpDiscoveryAddr ip = 228.5.6.9). Is this correct? My second question pertains to some errors I see in the logs after reloading this webapp (I reload the webapp context via Tomcat's Manager interface). I do this manually after moving now class files in. The context attribute in the application.xml file has reloadable = "false". The error is... Apr 26, 2007 11:14:46 AM org.apache.catalina.loader.WebappClassLoader loadClass INFO: Illegal access: this web application instance has been stopped already (the eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact) This message will continue to repeat, and fills the logs pretty quickly. Any ideas on how to fix this one? I appreciate anyone taking the time to read through this lengthy post. Any help would be greatly appreciated. Thanks, Matt -- View this message in context: http://www.nabble.com/Configuring-Lateral-TCP-Cache-Using-UDP-Discovery-for-Two-Physical-Servers-tf3652276.html#a10202545 Sent from the JCS - Users mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]