I reverted the ports back to the way they were and the SEVERE error goes away. I also get some lateral caching going on but its very erratic. In my test, server A is the only instance that writes to the cache.
Scenario 1 - success - Start server A, B, C - Access server B - Access server C - Access server A to put value in cache - Server B and C display the value put by A Scenaio 2 - fail - Start server A, B, C - Access server A to put value in cache - console displays connection exceptions - Access server B - Access server C - Access server A to remove then put value to cache - Server B and C displays null Scenaio 3 - fail - Start server A, B, C - Access server B - Access server C - Access server A to put value in cache - Server B and C display the value put by A - Restart server B - Access server A to put value in cache - server A displays exception about connection to B - Server B displays null Just wondering if perhaps I have some fundamental misunderstanding about how the lateral caching should be working. I would assume that values written to any of the local caches would be pushed into the other two. When a instance restarts it would rejoin the group etc. Am I missing something? Thanks > On Jul 27, 2017, at 12:00 PM, Mat Jaggard <apa...@jaggard.org.uk> wrote: > > Have you tested to see if any of the the TcpListenerPorts are open on your > server? If you're on Linux you can try `netstat -l` > > On Thu, 27 Jul 2017 at 15:52 Russell Sherk <russell.sh...@roguewave.com> > wrote: > >> Hi Greg, >> >> Don't know much about JCS. Just general Tomcat stuff. >> >> See if this helps: >> http://sentineltechsupport.gemalto.com/2013/10/java-runtime-log-error-could-not-instantiate-auxfactory-named-dc/ >> >> If not, maybe someone else in the list can help. >> >> Cheers, >> >> --Russ >> >> -----Original Message----- >> From: Greg Parker [mailto:gmparker2...@gmail.com] >> Sent: July-27-17 10:07 AM >> To: Commons Users List <user@commons.apache.org> >> Subject: Re: JCS LateralTCPCacheFactory >> >> Thanks Russ, >> >> So the TcpListenerPort value should match the tomcat port? So if tomcat >> is running on port 6080 the cache.ccf on that instance should set >> TcpListenerPort=6080? I set things up this way and nothing seems to >> complain; however, now I get a SEVERE error on first access and caching is >> not working across the three instances. Here are the details: >> >> SEVERE [ajp-nio-6009-exec-1] >> org.apache.commons.jcs.engine.control.CompositeCacheConfigurator.parseAuxiliary >> Could not instantiate auxiliary cache named "hello". >> >> jcs.region.hello=LTCP >> >> jcs.region.hello.cacheattributes=org.apache.commons.jcs.engine.CompositeCacheAttributes >> jcs.region.hello.cacheattributes.MaxObjects=1000 >> >> jcs.region.hello.cacheattributes.MemoryCacheName=org.apache.commons.jcs.engine.memory.lru.LRUMemoryCache >> jcs.region.hello.cacheattributes.UseMemoryShrinker=true >> jcs.region.hello.cacheattributes.MaxMemoryIdleTimeSeconds=3600 >> jcs.region.hello.cacheattributes.ShrinkerIntervalSeconds=60 >> jcs.region.hello.cacheattributes.MaxSpoolPerRun=500 >> >> jcs.region.hello.elementattributes=org.apache.commons.jcs.engine.ElementAttributes >> jcs.region.hello.elementattributes.IsEternal=false >> >> >> >> jcs.auxiliary.LTCP=org.apache.commons.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheFactory >> >> jcs.auxiliary.LTCP.attributes=org.apache.commons.jcs.auxiliary.lateral.socket.tcp.TCPLateralCacheAttributes >> jcs.auxiliary.LTCP.attributes.UdpDiscoveryEnabled=false >> jcs.auxiliary.LTCP.attributes.AllowGet=true >> jcs.auxiliary.LTCP.attributes.Receive=true >> jcs.auxiliary.LTCP.attributes.TcpListenerPort=6080 >> jcs.auxiliary.LTCP.attributes.TcpServers=localhost:7080,localhost:8080 >> >> Thanks >> >> >> >>> On Jul 27, 2017, at 8:57 AM, Russell Sherk <russell.sh...@roguewave.com> >> wrote: >>> >>> Hi Greg, >>> >>> Tomcat uses two consecutive ports. The one you specify and the next one >> for shutdown. E.g if you specify 8020, the shutdown port by default is 8021. >>> >>> Try spacing your ports out: 8020, 8022, 8024. >>> >>> --Russ >>> >>> >>> On Jul 26, 2017 10:11 PM, Greg Parker <gmparker2...@gmail.com> wrote: >>> I'm trying to get a sample cluster of tomcat servers (server A, B and C) >> to use a distributed cache. The ‘hello’ cache is configured on each server >> with a different TcpListenerPort on each server (8020, 8021, 8022) like >> this: >>> >>> jcs.region.hello=LTCP >>> … >>> >>> jcs.auxiliary.LTCP=org.apache.commons.jcs.auxiliary.lateral.socket.tcp >>> .LateralTCPCacheFactory >>> jcs.auxiliary.LTCP.attributes=org.apache.commons.jcs.auxiliary.lateral >>> .socket.tcp.TCPLateralCacheAttributes >>> jcs.auxiliary.LTCP.attributes.UdpDiscoveryEnabled=false >>> jcs.auxiliary.LTCP.attributes.AllowGet=true >>> jcs.auxiliary.LTCP.attributes.Receive=true >>> jcs.auxiliary.LTCP.attributes.TcpListenerPort=8020 >>> jcs.auxiliary.LTCP.attributes.TcpServers=localhost:8020,localhost:8021 >>> ,localhost:8022 >>> >>> >>> Server A has a page that sets a value in the cache like this: >>> >>> cache = JCS.getInstance("hello"); >>> cache.put(“message", “Hello from server A"); >>> >>> >>> Server B, and C try to get the value without setting it: >>> >>> cache = JCS.getInstance("hello"); >>> add(new Label("message", "Server B -> cache has : " + >>> cache.get(“message");)); >>> >>> >>> The first time I access the page on server A I get an exception - >> "Cannot connect to localhost:8021”. If I access the page on each server >> then things appear to start communicating; however, the “message” entry >> from the “hello” region is set on server A and null on B and C. Sometimes >> I see the value on server C displayed properly but never on server B. >>> >>> With a configuration like this should I expect to see values immediately >> distributed to the other servers? >>> >>> Is there a way I should be bootstrapping the cache when the server >> starts? If the servers need to communicate with one another it would seem >> to me that they need to be listening long before the first time the server >> tries to access the cache. >>> >>> For performance I would like to use the cache to store serialized XML >> data instead of storing it in the session or a database. The data remains >> in the cache while the user transforms it through several request cycles. >> So during a request cycle the XML data would be retrieved, transformed, and >> stored back in the cache. In a clustered environment I need the XML data >> available on every server in the cluster. Is this an acceptable use case >> for JCS? >>> >>> Thanks >>> >>> >>> >>> >> >>