1 Reply Latest reply on Sep 19, 2019 8:56 AM by jewellgm

    EJB client calling the same EJB in different servers within a loop


      Hello, there...


      My scenario is quite simple, but I can not figure out how to make it work.


      Recently we have migrated from JBoss 5.1 to Wildfly 11. The situation I am going to explain used to work within JBoss 5.1, but is not working within Wildfly anymore.


      I have a list of servers where resides a @Remote EJB and I need to connect to each of these servers and call this EJB. However, I can only see the connection being performed at the first server of the list. All other calls are made to that server, regardless I create new contexts and lookups.


      Looks like the InitialContext is being "reused".


      Here are some code snippets


      public interface RemoteEJB {
           String call();



      public class RemoteEJBImpl implements RemoteEJB {
           public String call() {
                String hostname = null;
                try {
                     hostname = InetAddress.getLocalHost().getHostName();
                } catch (UnknownHostException e) {
               return hostname;


      public class MainLocalEJB {
           private static final String REMOTE_EJB = "RemoteEJBImpl!com.test.service.RemoteEJB";
           public List executeRemoteBeansInLoop() {
                List result = new ArrayList();
                String[] remoteAddresses = {"",""};
                Arrays.stream(remoteAddresses).forEach(remoteAddress -> {
                     result.add(this.lookupRemoteService(remoteAddress, "8080").call());
                return result;
           private RemoteEJB lookupRemoteService(String remoteAddress, String remotePort) {
                RemoteEJB bean = null;
                try {
                     Context cContext = this.getContext(remoteAddress, remotePort);
                     bean = (RemoteEJB) cContext.lookup(this.getJNDIName(REMOTE_EJB));
                } catch (Exception e) {
                return bean;
           private Context getContext(String remoteAddress) throws NamingException {
                Properties env = new Properties();
                env.put(Context.PROVIDER_URL, this.getURL(remoteAddress);
                return new InitialContext(env);
           private String getURL(String remoteAddress, String remotePort) {
                StringBuilder url = new StringBuilder();
                return url.toString();
           private String getJNDIName(String beanName) {
                return this.getJNDINamePrefix() + beanName;
           private String getJNDINamePrefix() {
                return "ejb:connectivity-test-remote-ear/connectivity-test-remote/";



      Could you give me any help with that?


      Thanks in advance,