Hi,
Here is the demo code
//package and import statements ommited
@Stateless
public class OfferManagerBean implements OfferManager {
private static final Log _log = LogFactory.getLog(OfferManagerBean.class);
@PersistenceContext(unitName = "TEST_PU")
private EntityManager em ;
//added the Dependencies: org.infinispan export in the MANIFEST.MF
@Resource(lookup="java:jboss/infinispan/myCacheTest")
private org.infinispan.manager.CacheContainer container;
private org.infinispan.Cache<Object, Object> cache;
@PostConstruct
public void start() {
this.cache = this.container.getCache();
}
//I tried out this type of cache startup, also
//@Inject
//private Cache<Object, Object> cache;
@Override
public Offer getOffer(Long id) throws OfferException {
String cachedValue = (String)cache.get("offer"+id);
if (cachedValue == null) {
Query query = em.createNamedQuery(Offer.QUERY_FIND_BY_ID);
query.setParameter("_ID", id);
Offer offer = (Offer) query.getSingleResult();
_log.info("Offer object " + "offer"+offer.getId() + " returned from database");
cache.put("offer" + id, offer.getName());
_log.info("Offer object " + "offer"+offer.getId() + " is put on cache: " + cache.getName());
return offer;
} else {
Offer offer = new Offer();
offer.setId(id);
offer.setName(cachedValue);
_log.info("Offer object " + cachedValue + " returned from cache");
return offer;
}
}
@Override
public Offer update(Offer newOffer) throws OfferException {
try {
Offer offer = em.find(Offer.class, newOffer.getId());
offer.setName(newOffer.getName());
em.merge(offer);
em.flush();
//update offer to cache
String cachedValue = (String) cache.get("offer"+offer.getId());
if (cachedValue == null) {
cache.put("offer"+offer.getId(), offer.getName());
_log.info("Offer object " + "offer"+offer.getId() + " created on cache");
} else {
cache.replace("offer"+offer.getId(), offer.getName());
_log.info("Offer object " + "offer"+offer.getId() + " updated on cache");
}
return newOffer;
} catch (Throwable t) {
throw new OfferException("Update of offer '"+newOffer.getId()+"' failed: "+t.getMessage());
}
}
}
I tried the tcp transport stack with the same result
Here is the log from my nodes, with my comments:
---------------------Node 1----------------------------------------------------------------
-----------------------------------------------------------------------------------------------
09:20:30,715 INFO [org.jboss.web] (MSC service thread 1-1) registering web context: /ponuda
09:20:30,723 INFO [org.jboss.as] (MSC service thread 1-1) JBoss AS 7.1.0.CR1b "Flux Capacitor" started in 15484ms - Started 272 of 396 services (117 services are passive or on-demand)
09:20:30,793 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018559: Deployed "ponuda.war"
09:20:32,072 INFO [org.jboss.as.clustering.CoreGroupCommunicationService.lifecycle.web] (Incoming-9,null) JBAS010267: New cluster view for partition web (id: 1, delta: 1, merge: false) : [node1/web, node2/web]
09:20:32,077 INFO [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (Incoming-9,null) ISPN000094: Received new cluster view: [node1/web|1] [node1/web, node2/web]
09:20:45,539 INFO [org.jboss.resteasy.cdi.CdiInjectorFactory] (http--192.168.1.121-8080-1) Found BeanManager at java:comp/BeanManager
09:20:45,674 INFO [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (http--192.168.1.121-8080-1) ISPN000078: Starting JGroups Channel
09:20:45,674 INFO [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (http--192.168.1.121-8080-1) ISPN000094: Received new cluster view: [node1/myCacheTest|1] [node1/myCacheTest, node2/myCacheTest]
09:20:45,675 INFO [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (http--192.168.1.121-8080-1) ISPN000079: Cache local address is node1/myCacheTest, physical addresses are [192.168.1.121:55200]
09:20:45,688 INFO [org.infinispan.jmx.CacheJmxRegistration] (http--192.168.1.121-8080-1) ISPN000031: MBeans were successfully registered to the platform mbean server.
09:20:45,690 INFO [org.jboss.as.clustering] (http--192.168.1.121-8080-1) JBAS010301: Started repl cache from myCacheTest container
-----------------------COMMENT: calling getOffer methods over load balancer
09:20:45,834 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8080-1) Offer object offer1 returned from database
09:20:45,841 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8080-1) Offer object offer1 is put on cache: repl
09:20:47,617 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8080-1) Offer object Firstt offer returned from cache
09:20:48,883 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8080-1) Offer object Firstt offer returned from cache
09:20:50,068 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8080-1) Offer object Firstt offer returned from cache
09:21:39,337 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8080-1) Offer object Firstt offer returned from cache
-----------------------COMMENT: calling update method over load balancer
09:21:58,048 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8080-1) Offer object offer1 updated on cache
-----------------------COMMENT: calling getOffer methods over load balancer
09:22:05,540 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8080-1) Offer object The First returned from cache
09:22:07,400 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8080-1) Offer object The First returned from cache
---------------------------------Node 2--------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------
09:20:34,871 INFO [solder-servlet] (MSC service thread 1-2) Catch Integration for Servlets enabled
09:20:34,882 INFO [org.jboss.web] (MSC service thread 1-2) registering web context: /ponuda
09:20:34,940 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018559: Deployed "ponuda.war"
09:20:47,169 INFO [org.jboss.resteasy.cdi.CdiInjectorFactory] (http--192.168.1.121-8180-1) Found BeanManager at java:comp/BeanManager
09:20:47,294 INFO [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (http--192.168.1.121-8180-1) ISPN000078: Starting JGroups Channel
09:20:47,294 INFO [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (http--192.168.1.121-8180-1) ISPN000094: Received new cluster view: [node1/myCacheTest|1] [node1/myCacheTest, node2/myCacheTest]
09:20:47,295 INFO [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (http--192.168.1.121-8180-1) ISPN000079: Cache local address is node2/myCacheTest, physical addresses are [192.168.1.121:55300]
09:20:47,314 INFO [org.infinispan.jmx.CacheJmxRegistration] (http--192.168.1.121-8180-1) ISPN000031: MBeans were successfully registered to the platform mbean server.
09:20:47,314 INFO [org.jboss.as.clustering] (http--192.168.1.121-8180-1) JBAS010301: Started repl cache from myCacheTest container
-----------------------COMMENT: calling getOffer methods over load balancer
09:20:47,440 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8180-1) Offer object offer1 returned from database
09:20:47,442 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8180-1) Offer object offer1 is put on cache: repl
09:20:48,244 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8180-1) Offer object Firstt offer returned from cache
09:20:49,560 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8180-1) Offer object Firstt offer returned from cache
09:22:03,847 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8180-1) Offer object Firstt offer returned from cache
09:22:08,178 INFO [hr.ponude.dao.OfferManagerBean] (http--192.168.1.121-8180-1) Offer object Firstt offer returned from cache