我已经在http://community.jboss.org/wiki/HAWebSessionsviaDatabasePersistence和其他人配置了解决方案,例如使用文件和数据库存储在context.xml中配置Manager。但在JBoss-6.0.0.Final根本不起作用。可能是个错误?
我已经完成了几项测试,并且在所有测试中,会话都正确地存储在配置的持久性中。但是,如果我重新部署应用程序或重新启动JBoss服务器,它将忽略持久化会话并要求我重新登录而不是重用前一个。我已经检查过SessionID存储在会话持久性中,并且浏览器正在发送正确的cookie。
我已经为JBoss-6.0.0.Final附加了一个测试用例。它配置为http://community.jboss.org/wiki/HAWebSessionsviaDatabasePersistence
只需将此行添加到文件jboss-6.0.0.Final/server/default/data/hypersonic/localDB.script(如果需要,可以使用自己的mysql数据源)
CREATE TABLE httpsessions (app VARCHAR(255) NOT NULL, id VARCHAR(255) NOT NULL, fullId VARCHAR(255) NOT NULL, creationtime BIGINT NOT NULL, maxinactive BIGINT NOT NULL, version INT NOT NULL, lastaccess BIGINT NOT NULL, isnew CHAR(1) NOT NULL, valid CHAR(1) NOT NULL, metadata VARBINARY NULL, attributes LONGVARBINARY NOT NULL, CONSTRAINT app_id PRIMARY KEY (app, id))
然后,部署应用程序并转到localhost:8080 / web在登录表单中输入凭据:user:password如果suecssfull登录您将获得'ok'(请参阅index.html)然后,您可以看到session存储在数据库中:
$ cat jboss-6.0.0.Final/server/default/data/hypersonic/localDB.log
你会得到这样的东西:
...
DELETE FROM HTTPSESSIONS WHERE APP='/web' AND ID='vIUYhSZDkw7fjCnEealRFA__'
INSERT INTO HTTPSESSIONS VALUES('/web','vIUYhSZDkw7fjCnEealRFA__','vIUYhSZDkw7fjCnEealRFA__',1351177671379,1800,9,1351178495217,'0...
COMMIT
如果您使用以下方式重新部署应用程序:
$ touch jboss-6.0.0.Final/server/default/deploy/test.ear/META-INF/application.xml
然后在localhost:8080 / web上重新加载浏览器,系统将提示您再次输入用户/密码,即使已存储sesion ID。您也可以使用本机jbossweb.sar / context.xml配置获得此行为。
如果我丢失了一些配置或者它真的是一个bug,任何人都可以说我吗?我在几个配置之间做了很多排列,但总是得到相同的结果。
我在测试用例中添加了一个链接,因为我不知道如何将其附加到论坛中:
问候。
答案 0 :(得分:0)
我研究了一下,我发现为什么这种配置对我不起作用:
如果您使用JASS作为身份验证框架,则会话持久性对于维护登录重新部署的用户没有用。 JAAS校长没有坚持,所以无论如何都会丢失。
这可以使用集群来解决,这里是如何做的:
http://corecanarias.blogspot.com.es/2013/03/jaas-persistent-sessions-with-jboss-6.html