开发者社区> 问答> 正文

配置websession问题 : 配置报错 

@李玉珏 你好,想跟你请教个问题:我根据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这个参数。

展开
收起
kun坤 2020-06-03 14:33:23 658 0
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台和多台原理差不多
    2020-06-04 10:35:18
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载