问题标签 [stateless-session]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2201 浏览

php - 多个 PHP Web 服务器共享一个 Redis 服务器用于用户会话

我有 2 台运行 PHP 和 Nginx 的 Web 服务器……而且我有 1 台 Redis 服务器。我希望 Web 服务器将 Redis 数据库用于用户登录数据。这将允许我扩展 Web 服务器,而无需强制登录用户在他们访问新服务器时重新进行身份验证。

两台 PHP/Nginx 服务器都使用 Redis 进行会话处理,并且它们都指向同一个 Redis 数据库。当我在浏览器中访问任一站点时,它会生成一个会话令牌并将其存储在 Redis 中(总共创建两个 Redis 密钥)......但是我想要的是在访问站点 #1 时创建一个新会话,将会话存储在Redis,并在我访问时让站点 #2 认出我,因为它查询 Redis(因此总共只有一个 Redis 密钥)。

我的所有 3 台服务器都在 AWS 中,在同一个 VPC 中。我使用内部 IP 地址与 Web 服务器和 Redis 进行通信(因此对机器有一定程度的信任)。

我显然在这里遗漏了一些东西,它可能是负载均衡器(我将实现)。但我试图用最少的组件开发一个 Redis 共享设计。此外,我不完全确定负载平衡器有助于解决这个问题。

以下是代码的相关部分:

PHP/Nginx 服务器:(x2)

(1) /etc/php/7.2/fpm/php.ini

(2) /var/www/html/test.php

Redis 服务器:(x1)

(3) /etc/redis/redis.conf

当我点击这两个站点的test.php页面时,它们成功地生成了自己的会话并将其存储在 Redis 数据库中。而且他们正确地增加了他们各自的会话令牌......但我希望这些网络服务器与他们共享 Redis 会话数据,所以他们“记住”所有登录的用户(即使这是用户第一次访问给定的网络服务器)。

谢谢!


编辑:我还尝试手动查询 Redis 以获取登录用户数据。这产生了与上面的test.php相似的结果。每个网站最终都创建和管理了自己的会话令牌。

PHP/Nginx 服务器:(x2)

(4) /var/www/html/redis-check.php

0 投票
1 回答
126 浏览

java - 使用 jboss EAP 7 发送 JMS(消息)时出错

通过 ActiveMQ 使用 Wildfly 和 JMS 我得到了以下异常。

javax.ejb.EJBTransactionRolledbackException:生产者已关闭

我有以下无状态bean

我使用简单的java类来创建一个产生消息并将其发送到目的地的方法,如下所示

ExchangeSenderFacadeCoreI是接口类,但是当我执行此代码时,我得到了上述异常,但是如果我将sendToExchange()方法移入类ExchangeSenderFacadeCoreExchangeSenderFacadeWrapperBean则错误将消失。谁能告诉我这种情况的确切原因

0 投票
1 回答
302 浏览

jpa - 无状态 EJB 如何回滚 JPA 事务

例如:

由于无状态 EJB 默认是事务性的,我会理解如果抛出系统异常(如 OptimisticLockedException),事务将如何回滚?em.getTransaction ().rollback将如何被隐式调用?

提前致谢。

0 投票
0 回答
32 浏览

microservices - 如何为链式微服务存储状态客户端

我想存储微服务状态客户端。对于 asingle service来说,如何实现这一点似乎相当简单(在状态中返回 an attributeHTTP body。然而,链式服务使事情变得更加复杂。

在此处输入图像描述

在上面的例子中,API2API3想返回到客户端。我想知道如何最好地实现这一点。我目前的想法是向客户端API1公开一个状态attributeAPI1然后负责添加从该状态属性返回API2或返回API3到该状态属性中的任何状态。

我想知道人们是否尝试过其他选择?