我花了 2 多天的时间什么都没做,只是试图让 Infinispan 在集群环境中工作,但它不起作用。我不想运行单独的 infinispan 服务器,我只想将它嵌入到在集群 Glassfish 上运行的应用程序中。那不可能吗?我有一个示例 JSF 应用程序,您可以在其中将值加载到应该位于缓存中的地图中。我拉起一个集群实例,添加值,它们就会显示出来。但是当我转到另一个集群实例时,它显示地图为空。
我知道我做错了什么,我只是不知道是什么。一直在搜索互联网,没有关于如何让它工作的全面教程。
配置(从据称显示集群http://www.mastertheboss.com/infinispan/infinispan-tutorial-part-2/page-2的教程中复制):
<infinispan>
    <global>
      <transport clusterName="demoCluster"/>
      <globalJmxStatistics enabled="true"/>
   </global>
   <default>
      <jmxStatistics enabled="true"/>
      <clustering mode="distribution">
         <hash numOwners="2" rehashRpcTimeout="120000"/>
         <sync/>
      </clustering>
   </default>
</infinispan>
上下文监听器:
package hazelcache.test;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.manager.EmbeddedCacheManager;
@WebListener()
public class Listener implements ServletContextListener
{
    EmbeddedCacheManager manager;
    @Override
    public void contextInitialized(ServletContextEvent sce)
    {
        try
        {
            manager = new DefaultCacheManager("config.xml");
            manager.start();
            sce.getServletContext().setAttribute("cacheManager", manager);
        }
        catch (IOException ex)
        {
            Logger.getLogger(Listener.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    @Override
    public void contextDestroyed(ServletContextEvent sce)
    {
        manager.stop();
    }
}
豆:
package hazelcache.test;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import org.infinispan.configuration.global.GlobalConfigurationBuilder;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.manager.EmbeddedCacheManager;
@ManagedBean(name="clusterTest")
public class ClusteredCacheBean extends CacheTestBean
{
    EmbeddedCacheManager manager;
    public ClusteredCacheBean() throws IOException
    {
        System.out.println("Before setStuffz()");
        manager = (EmbeddedCacheManager) ((ServletContext)FacesContext.getCurrentInstance().
                getExternalContext().getContext()).getAttribute("cacheManager");
        setStuffz(manager.getCache("stuffz"));
        System.out.println("After setStuffz()");
    }// end ClusteredCacheBean()
    private static EmbeddedCacheManager createCacheManagerProgramatically() {
        return new DefaultCacheManager(GlobalConfigurationBuilder.defaultClusteredBuilder().build());
     }
    @Override
    public String addToCache()
    {
        String forwardTo = null;
        manager.getCache("stuffz").put(getId(), getName());
        return forwardTo;
    }// end addToCache()
    @Override
    public List getStuffzList()
    {
        System.out.println("Stuffz: " + getStuffz().size());
        return new LinkedList(manager.getCache("stuffz").entrySet());
    }
}// end class ClusteredCacheBean
我现在真的不知道该怎么办...