当前位置: 首页 > 知识库问答 >
问题:

为什么JBoss EAP 6.4无法使用http会话复制机制加载会话?

李联
2023-03-14

我在Windows的JBoss EAP 6.1中成功地使用了会话复制。但后来我改为JBoss EAP 6.4在ubuntu中进行开发测试,同样的代码停止了工作。

没什么,我只是添加了<代码>

我将类的实例存储在超文本传输协议会话中,使用jboss-cli.sh--connect命令=:关闭NOPAUSE=true环境变量)关闭服务器,然后再次启动服务器。服务器启动后,当我再次尝试访问会话时,我无法检索类实例,控制台中出现以下错误:

...

21:47:13,852 WARN  [org.jboss.as.clustering.web.infinispan] (http-/0.0.0.0:80-1)
 JBAS010322: Failed to load session 9OQtRW3Vgc-uf8w3DmRHD+PK: java.lang.RuntimeE
xception: JBAS010333: Failed to load session attributes for session: 9OQtRW3Vgc-
uf8w3DmRHD+PK
        at org.jboss.as.clustering.web.infinispan.DistributedCacheManager$2.invo
ke(DistributedCacheManager.java:229)
        at org.jboss.as.clustering.web.infinispan.DistributedCacheManager$2.invoke(DistributedCacheManager.java:212)
        at org.jboss.as.clustering.infinispan.invoker.SimpleCacheInvoker.invoke(SimpleCacheInvoker.java:34)
        at org.jboss.as.clustering.infinispan.invoker.BatchCacheInvoker.invoke(BatchCacheInvoker.java:48)
        at org.jboss.as.clustering.infinispan.invoker.RetryingCacheInvoker.invoke(RetryingCacheInvoker.java:85)
        at org.jboss.as.clustering.web.infinispan.DistributedCacheManager$ForceSynchronousCacheInvoker.invoke(DistributedCacheManager.java:550)
        at org.jboss.as.clustering.web.infinispan.DistributedCacheManager.getData(DistributedCacheManager.java:238)
        at org.jboss.as.clustering.web.infinispan.DistributedCacheManager.getSessionData(DistributedCacheManager.java:196)
        at org.jboss.as.web.session.DistributableSessionManager.loadSession(DistributableSessionManager.java:1429) [jboss-as-web-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21]
        at org.jboss.as.web.session.DistributableSessionManager.findSession(DistributableSessionManager.java:688) [jboss-as-web-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21]
 at org.jboss.as.web.session.DistributableSessionManager.findSession(DistributableSessionManager.java:84) [jboss-as-web-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21]
        at org.apache.catalina.connector.Request.doGetSession(Request.java:2661) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.catalina.connector.Request.getSession(Request.java:2382) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:791) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:801) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.webstories.core.auth.AuthSession.from(AuthSession.java:12) [classes:]
...

我不知道从哪里开始研究,因为我对JBoss内部结构一无所知,除了在整个Web中广泛记录的内容。在这种情况下,记录的是您只需要添加

lsb_发布-a:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.2 LTS
Release:        14.04
Codename:       trusty

java-版本:

java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) Client VM (build 25.45-b02, mixed mode)

共有1个答案

时宾实
2023-03-14

沿着堆栈跟踪向下。应该有原因(嵌套异常),我怀疑它是不可序列化的指针或空指针。否则,您可能会在前面找到另一个不可序列化的异常

会话持久性/复制问题最可能的原因是试图在会话中存储不可序列化的对象。这会导致会话存储失败,后续检索无法继续。

请记住,不仅存储的类必须是可序列化的,而且任何非静态非瞬态字段都必须递归。这可能是非常困难和乏味的找到。

如果你在集群中的不同服务器上部署了来自不同编译器的版本,这只会导致问题,因为编译器会自动创建一个,所以如果它们来自同一个编译器,它们将匹配。

 类似资料:
  • 简介 由于 HTTP 驱动的应用程序是无状态的,Session 提供了一种在多个请求之间存储有关用户的信息的方法。Laravel 通过同一个可读性强的 API 处理各种自带的 Session 后台驱动程序。支持诸如比较热门的 Memcached, Redis 和数据库。 配置 Session 的配置文件存储在 config/session.php 文件中。请务必查看此文件中对于你可用的选项。默认情

  • 我有一些hazelcast http会话复制特性的问题。 我有些问题: 在同一个tomcat集群中有没有可能有hazelcast封装的应用程序和非hazelcast封装的应用程序? 带有hazelcast的应用程序应该是可分发的?(通过像其他方法一样添加它的web.xml) 部署应用程序的Tomcat不应该在集群中?是否可以在同一tomcat中使用标准tomcat会话复制将其他应用程序群集化? 编

  • 问题内容: 我正在本地计算机上的Tomcat 7上设置群集/复制,以评估它是否可与我的环境/代码库一起使用。 建立 我在不同端口上运行的同级目录中有两个相同的tomcat服务器。我已经在其他两个端口上监听了httpd,并作为VirtualHosts连接到了两个tomcat实例。我可以在配置的端口上访问两种环境并与之交互。一切都按预期进行。 Tomcat服务器在server.xml中启用了集群功能:

  • Cookie 通过 HTTP cookie 的会话跟踪是最常用的会话跟踪机制,且所有 servlet 容器都应该支持。 容器向客户端发送一个 cookie,客户端后续到服务器的请求都将返回该cookie,明确地将请求与会话关联。会话跟踪 cookie 的标准名字必须是JSESSIONID。容器也允许通过容器指定的配置自定义会话跟踪cookie的名字。 所有 servlet 容器必须提供能够配置容器

  • 我试图使用Spring Cloud的Zuul、Eureka和我自己的服务实现微服务架构。我有多个具有UI和服务的服务,每个服务都可以使用x509安全性对用户进行身份验证。现在我想把祖尔放在那些服务机构的前面。由于Zuul无法将客户端证书转发到后端,我认为下一个最好的方法是在Zuul的前门对用户进行身份验证,然后使用Spring会话在后端服务中复制他们的身份验证状态。我遵循了Dave Syer的教程

  • 我只知道版本差异,但不知道功能或其他。i、 e Sparksession具有内部sparkcontext和conf。