3

我们有一个在 WildFly 11 上运行的基于 Web 的应用程序(最近从 WildFly 9 迁移),当集群中的所有节点都启动时,我们面临着这个奇怪的问题。

以下是我们的应用程序设计用于登录和显示主页的方式:

  1. 输入我们应用程序的 URL 会为我们带来登录页面。
  2. 提供有效凭据并单击登录。
  3. 后端 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>

如果我在这里做错了什么,请建议我如何解决这个问题或启发我。

4

0 回答 0