我们有一个在 WildFly 11 上运行的基于 Web 的应用程序(最近从 WildFly 9 迁移),当集群中的所有节点都启动时,我们面临着这个奇怪的问题。
以下是我们的应用程序设计用于登录和显示主页的方式:
- 输入我们应用程序的 URL 会为我们带来登录页面。
- 提供有效凭据并单击登录。
- 后端 servlet 验证这些凭据,并在成功登录后,浏览器发送带有主页 URL 的重定向请求 (HTTP302)。
所以问题来了——
对于第一个尝试登录应用程序的用户(即上面的步骤 1-3),即使
用户输入了有效的凭据,也会被重定向回登录页面。在后端 - 我们的主页 servlet 找不到刚刚在登录过程中创建的会话,因此用户被重定向回登录页面。
在此之后的任何登录尝试都可以正常工作。
我们通过 VPN(这是一个较慢的网络)尝试了相同的步骤(即上面的步骤 1 - 3),我们没有看到这个问题发生在那里,我们还做了一些其他测试来得出结论,在重定向期间给它更多时间在第一次登录时工作正常。所以我们得出结论,这可能是 JGroups 初始化问题,因为这仅在第一次登录尝试时发生。
<channels default="ee">
<channel name="ee" stack="tcp" cluster="repl"/>
</channels>
.
<stack name="tcp">
<transport type="TCP" socket-binding="jgroups-tcp"/>
<protocol type="TCPPING">
<property name="initial_hosts">
10.0.99.11[7600],10.0.99.12[7600]
</property>
<property name="num_initial_members">
2
</property>
</protocol>
<protocol type="MERGE3"/>
<protocol type="FD_SOCK"/>
<protocol type="FD_ALL"/>
<protocol type="VERIFY_SUSPECT"/>
<protocol type="pbcast.NAKACK2"/>
<protocol type="UNICAST3"/>
<protocol type="pbcast.STABLE"/>
<protocol type="pbcast.GMS"/>
<protocol type="MFC"/>
<protocol type="FRAG2"/>
</stack>
.
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>
<interface name="public">
<inet-address value="10.0.99.12"/>
</interface>
<interface name="private">
<inet-address value="${jboss.bind.address.private:127.0.0.1}"/>
</interface>
</interfaces>
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
<socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
<socket-binding name="http" port="${jboss.http.port:8080}"/>
<socket-binding name="https" port="${jboss.https.port:8443}"/>
<socket-binding name="jgroups-mping" interface="public" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
<socket-binding name="jgroups-tcp" interface="public" port="7600"/>
<socket-binding name="jgroups-udp" interface="public" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
<socket-binding name="modcluster" port="0" multicast-address="${jboss.modcluster.multicast.address:224.0.1.105}" multicast-port="23364"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
<outbound-socket-binding name="10_0_99_11">
<remote-destination host="10.0.99.11" port="6666"/>
</outbound-socket-binding>
<outbound-socket-binding name="10_0_99_12">
<remote-destination host="10.0.99.12" port="6666"/>
</outbound-socket-binding>
</socket-binding-group>
如果我在这里做错了什么,请建议我如何解决这个问题或启发我。