10
回答
配置websession问题
极速云服务器,低至1.04元/天>>>   

@李玉珏 你好,想跟你请教个问题:我根据https://www.zybuluo.com/liyuj/note/486177#318web会话集群化 的方法配置了websession集群,但在应用启动时会报如下异常:


严重: Exception starting filter IgniteWebSessionsFilter
class org.apache.ignite.IgniteException: Cache for web sessions is not started (is it configured?): partitioned1
	at org.apache.ignite.cache.websession.WebSessionFilter.initCache(WebSessionFilter.java:336)
	at org.apache.ignite.cache.websession.WebSessionFilter.init(WebSessionFilter.java:292)
	at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4854)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5546)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)


我没有配置IgniteConfigurationFilePath这个参数。


<无标签>
举报
mini188
发帖于1年前 10回/217阅
共有10个答案 最后回答: 1年前

引用来自“李玉珏”的评论

字面意思就是session对应的缓存没有启动。

不指定IgniteConfigurationFilePath,他会使用一个默认的配置文件,没有的话,启动一个什么都没有的节点。

引用来自“mini188”的评论

是的,在WebSessionFilter里的initCache方法中报的:
    
@SuppressWarnings("unchecked")
    void initCache() {
        cache = webSesIgnite.cache(cacheName);
        binaryCache = webSesIgnite.cache(cacheName);


        if (cache == null)
            throw new IgniteException("Cache for web sessions is not started (is it configured?): " + cacheName);



这个cache取出来是null的。


ignite启动应该不需要设置什么吧,嵌入在web系统中应该也是可以启动的吧,我直接当缓存用是没问题的。


另外,我见webSesIgnite的启动代码如下:
webSesIgnite = G.ignite(gridName);



而一般不是ignite = Ignition.start();这要启动吗?

引用来自“李玉珏”的评论

是需要在配置文件中设置一个缓存的,并且缓存的名字要和IgniteWebSessionsCacheName的值一致。

全默认配置启动的节点,是没有任何缓存的。

引用来自“mini188”的评论

那请问我这种情况如何在配置中创建缓存呢?
https://www.zybuluo.com/liyuj/note/486177#3183过期和退出

字面意思就是session对应的缓存没有启动。

不指定IgniteConfigurationFilePath,他会使用一个默认的配置文件,没有的话,启动一个什么都没有的节点。

引用来自“李玉珏”的评论

字面意思就是session对应的缓存没有启动。

不指定IgniteConfigurationFilePath,他会使用一个默认的配置文件,没有的话,启动一个什么都没有的节点。

是的,在WebSessionFilter里的initCache方法中报的:
    
@SuppressWarnings("unchecked")
    void initCache() {
        cache = webSesIgnite.cache(cacheName);
        binaryCache = webSesIgnite.cache(cacheName);


        if (cache == null)
            throw new IgniteException("Cache for web sessions is not started (is it configured?): " + cacheName);



这个cache取出来是null的。


ignite启动应该不需要设置什么吧,嵌入在web系统中应该也是可以启动的吧,我直接当缓存用是没问题的。


另外,我见webSesIgnite的启动代码如下:
webSesIgnite = G.ignite(gridName);



而一般不是ignite = Ignition.start();这要启动吗?

引用来自“李玉珏”的评论

字面意思就是session对应的缓存没有启动。

不指定IgniteConfigurationFilePath,他会使用一个默认的配置文件,没有的话,启动一个什么都没有的节点。

引用来自“mini188”的评论

是的,在WebSessionFilter里的initCache方法中报的:
    
@SuppressWarnings("unchecked")
    void initCache() {
        cache = webSesIgnite.cache(cacheName);
        binaryCache = webSesIgnite.cache(cacheName);


        if (cache == null)
            throw new IgniteException("Cache for web sessions is not started (is it configured?): " + cacheName);



这个cache取出来是null的。


ignite启动应该不需要设置什么吧,嵌入在web系统中应该也是可以启动的吧,我直接当缓存用是没问题的。


另外,我见webSesIgnite的启动代码如下:
webSesIgnite = G.ignite(gridName);



而一般不是ignite = Ignition.start();这要启动吗?

是需要在配置文件中设置一个缓存的,并且缓存的名字要和IgniteWebSessionsCacheName的值一致。

全默认配置启动的节点,是没有任何缓存的。

引用来自“李玉珏”的评论

字面意思就是session对应的缓存没有启动。

不指定IgniteConfigurationFilePath,他会使用一个默认的配置文件,没有的话,启动一个什么都没有的节点。

引用来自“mini188”的评论

是的,在WebSessionFilter里的initCache方法中报的:
    
@SuppressWarnings("unchecked")
    void initCache() {
        cache = webSesIgnite.cache(cacheName);
        binaryCache = webSesIgnite.cache(cacheName);


        if (cache == null)
            throw new IgniteException("Cache for web sessions is not started (is it configured?): " + cacheName);



这个cache取出来是null的。


ignite启动应该不需要设置什么吧,嵌入在web系统中应该也是可以启动的吧,我直接当缓存用是没问题的。


另外,我见webSesIgnite的启动代码如下:
webSesIgnite = G.ignite(gridName);



而一般不是ignite = Ignition.start();这要启动吗?

引用来自“李玉珏”的评论

是需要在配置文件中设置一个缓存的,并且缓存的名字要和IgniteWebSessionsCacheName的值一致。

全默认配置启动的节点,是没有任何缓存的。

那请问我这种情况如何在配置中创建缓存呢?

引用来自“李玉珏”的评论

字面意思就是session对应的缓存没有启动。

不指定IgniteConfigurationFilePath,他会使用一个默认的配置文件,没有的话,启动一个什么都没有的节点。

引用来自“mini188”的评论

是的,在WebSessionFilter里的initCache方法中报的:
    
@SuppressWarnings("unchecked")
    void initCache() {
        cache = webSesIgnite.cache(cacheName);
        binaryCache = webSesIgnite.cache(cacheName);


        if (cache == null)
            throw new IgniteException("Cache for web sessions is not started (is it configured?): " + cacheName);



这个cache取出来是null的。


ignite启动应该不需要设置什么吧,嵌入在web系统中应该也是可以启动的吧,我直接当缓存用是没问题的。


另外,我见webSesIgnite的启动代码如下:
webSesIgnite = G.ignite(gridName);



而一般不是ignite = Ignition.start();这要启动吗?

引用来自“李玉珏”的评论

是需要在配置文件中设置一个缓存的,并且缓存的名字要和IgniteWebSessionsCacheName的值一致。

全默认配置启动的节点,是没有任何缓存的。

引用来自“mini188”的评论

那请问我这种情况如何在配置中创建缓存呢?

引用来自“李玉珏”的评论

https://www.zybuluo.com/liyuj/note/486177#3183过期和退出

谢谢啦,问题解决了。

引用来自“jxlgzwh”的评论

我也没搞定,有搞定的 发我一份!
我问题已经搞定了,写了一篇博客,你可以参考一下:http://blog.csdn.net/5207/article/details/53034355

引用来自“jxlgzwh”的评论

我也没搞定,有搞定的 发我一份!

引用来自“mini188”的评论

我问题已经搞定了,写了一篇博客,你可以参考一下:http://blog.csdn.net/5207/article/details/53034355
https://www.zybuluo.com/liyuj/note/393469#318web%E4%BC%9A%E8%AF%9D%E9%9B%86%E7%BE%A4%E5%8C%96 的
3.18.1.架构
要用Ignite配置一个分布式Web会话缓存,通常需要将应用启动为一个Ignite节点(嵌入式模式),当多个应用服务器实例启动后,所有的Ignite节点会连姐在一起形成一个分布式缓存。

这段该如何理解,比如多个tomcat 如何配置才能让他们连接在一起形成一个分布式缓存?

引用来自“jxlgzwh”的评论

我也没搞定,有搞定的 发我一份!

引用来自“mini188”的评论

我问题已经搞定了,写了一篇博客,你可以参考一下:http://blog.csdn.net/5207/article/details/53034355

引用来自“jxlgzwh”的评论

https://www.zybuluo.com/liyuj/note/393469#318web%E4%BC%9A%E8%AF%9D%E9%9B%86%E7%BE%A4%E5%8C%96 的
3.18.1.架构
要用Ignite配置一个分布式Web会话缓存,通常需要将应用启动为一个Ignite节点(嵌入式模式),当多个应用服务器实例启动后,所有的Ignite节点会连姐在一起形成一个分布式缓存。

这段该如何理解,比如多个tomcat 如何配置才能让他们连接在一起形成一个分布式缓存?

是呀,启动一个节点就不是分布式啦,所以要启动多个才是分布式。

另外,如果都是在tomcat里启动有两种方式:第一种是用ignite的自动发现,也就是说两个嵌入在应用中的Ignite就能自动组成集群。另一种是自己配置静态ip这样也能发现对方。

2台和多台原理差不多

顶部