Uploaded image for project: 'JBoss Enterprise Application Platform 4 and 5'
  1. JBoss Enterprise Application Platform 4 and 5
  2. JBPAPP-6789

EJB3 load balancing doesn't keep client's node list up to date when @RemoteBinding(jndiBinding) is used

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: EAP_EWP 5.1.0
    • Fix Version/s: EAP_EWP 5.1.2 ER1
    • Component/s: EJB
    • Labels:
      None
    • Steps to Reproduce:
      Hide

      Deploy a simple EJB with "@Stateless @Clustered @Remote(MyRemote.class) @RemoteBinding ( jndiBinding = "foo" )" to the cluster.
      Call the EJB with a client.
      Start another cluster member.
      Call the EJB again.
      Check the client's member list.

      Expected result: member list is updated to include new node
      Actual result: member list is not updated

      Member list pulled from the stub with:
      StatelessClusteredProxyInvocationHandler ih = (StatelessClusteredProxyInvocationHandler) Proxy.getInvocationHandler(stub);
      FamilyClusterInfo fci = ih.getFamilyWrapper().get();
      System.out.println ( fci.getTargets() );

      Show
      Deploy a simple EJB with "@Stateless @Clustered @Remote(MyRemote.class) @RemoteBinding ( jndiBinding = "foo" )" to the cluster. Call the EJB with a client. Start another cluster member. Call the EJB again. Check the client's member list. Expected result: member list is updated to include new node Actual result: member list is not updated Member list pulled from the stub with: StatelessClusteredProxyInvocationHandler ih = (StatelessClusteredProxyInvocationHandler) Proxy.getInvocationHandler(stub); FamilyClusterInfo fci = ih.getFamilyWrapper().get(); System.out.println ( fci.getTargets() );
    • Affects:
      Release Notes
    • Workaround:
      Workaround Exists
    • Workaround Description:
      Hide

      Don't use @RemoteBinding(jndiBinding=...)

      Show
      Don't use @RemoteBinding(jndiBinding=...)
    • Release Notes Text:
      Hide
      A clustered EJB using @RemoteBinding(jndiBinding=...) or <remote-binding> incorrectly created a proxy in JNDI, then replaced it with the correct proxy.
      When the cluster membership changed, the wrong proxy's cluster member list was updated, so the EJB clients were not informed about the new member.
      The extra proxy is no longer created and removed.
      The cluster member list now updates correctly, allowing EJB calls to load balance and failover to the new nodes.
      Show
      A clustered EJB using @RemoteBinding(jndiBinding=...) or <remote-binding> incorrectly created a proxy in JNDI, then replaced it with the correct proxy. When the cluster membership changed, the wrong proxy's cluster member list was updated, so the EJB clients were not informed about the new member. The extra proxy is no longer created and removed. The cluster member list now updates correctly, allowing EJB calls to load balance and failover to the new nodes.
    • Release Notes Docs Status:
      Documented as Resolved Issue
    • Docs QE Status:
      NEW

      Description

      The node list in the client proxy for a clustered EJB3 bean is not kept up to date
      when the bean uses @RemoteBinding(jndiBinding=...) or <remote-binding>.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  dereed Dennis Reed
                  Reporter:
                  dereed Dennis Reed
                  Writer:
                  Jared Morgan
                • Votes:
                  2 Vote for this issue
                  Watchers:
                  6 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: