1 Reply Latest reply on Jul 2, 2007 3:37 PM by ron_sigal

    JBoss - HTTP (JBoss behind Router)

    antonis.gouzias

      I have a problem in testing remote method calls via http using JBOSS 4.2.0.GA application server.

      I want to call EJB3 methods via HTTP ONLY (I have a firewall problem)

      I followed the configurations described on JBoss wiki at

      1.http://wiki.jboss.org/wiki/Wiki.jsp?page=Accessing_EJB3s_over_HTTP_HTTPS
      2.http://wiki.jboss.org/wiki/Wiki.jsp?page=JNDIoverHTTP


      Everything works fine if my clients are in the same LAN as my JBoss Server.

      But the real scenario is that the JBoss Server is behind a router/firewall, so the clients don't have direct access to the JBoss Server.
      (Please see the diagram below)


      JBoss Server(<Lan IP>)<-->Router(<Router IP>)<---INTERNET--> Client()


      The router is configured to forward TCP/UDP (8080) to the JBoss Server.
      My problem is that the client tries to connect to the JBoss <LAN IP> and not to <Router IP>.

      I suppose that the JBoss server expose the internal lan ip to the client.
      Where can i configure the 'client connect port' parameter so the client should try to connect to the router ip and not the internal lan ip of my jboss server?

      thanks

        • 1. Re: JBoss - HTTP (JBoss behind Router)
          ron_sigal

          I can comment on the part of your question related to Remoting. The section of http://wiki.jboss.org/wiki/Wiki.jsp?page=Accessing_EJB3s_over_HTTP_HTTPS called "Enabling EJB3 Connectors" refers to InvokerLocator attributes, e.g.,

          <attribute name="InvokerLocator">
           servlet://${jboss.bind.address}:8080/servlet-invoker/ServerInvokerServlet
          </attribute>
          


          The InvokerLocator is a Remoting object which identifies a server. You can add parameters to the InvokerLocator called "clientConnectAddress" and "clientConnectPort" which tell the client which address to connect to. I.e., in your case they should give the address/port of the router. For example,

          <attribute name="InvokerLocator">
           servlet://${jboss.bind.address}:8080/servlet-invoker/ServerInvokerServlet/&clientConnectAddress=router.bluemonkey.com
          </attribute>
          


          There is a brief discussion of these parameters in Section 5.4.2 "Configurations affecting the invoker client" of the Remoting Guide (http://labs.jboss.com/jbossremoting/docs/guide/ch05.html#d0e1046).