2 Replies Latest reply on Dec 8, 2003 9:42 AM by realise

    JBoss 3.2.1, RMI over HTTP

    realise

      There have been many posts on this topic, and we have followed as many suggestions as we can find, but JBoss (app layer) is still instructing the web layer (Tomcat) to use an anonymous port.

      I have attached a text file with various listings for those who may be interested. It shows changes we have made to various JBoss xml files, an example JSP, an annotated port listing (netstat) and firewall logs of the transaction.

      We have opened the firewall and logged the connections so that we could see what the traffic was, and after some communication via 8080 (JNDI, I assume), the web layer opens a new connection to the anonymous port on the app layer.

      We have looked briefly at RMI over SSL, but for a number of reasons we cannot control, it would be much better if we can get it to work over HTTP.

      Have we missed something?

      Or is it simply not possible with 3.2.1?

      We briefly tried 3.2.2 but it seems syntactically different, and we have tried under IBM JRE 131, 141 and Sun 142.

      Thanks.

      Seumas.

        • 1. Re: JBoss 3.2.1, RMI over HTTP
          didi1976

          Hi,

          try specifying a invoker-proxy-binding. I did not check the config below but we use an own invoker which uses https and that is the way we specified it there. You can set the invoker per EJB in you jboss.xml. In our case it is an stateful session bean which does the work.

          jboss.xml:


          ...

          <ejb-name>UserSessionBean</ejb-name>
          <jndi-name>UserSessionBean</jndi-name>

          <invoker-bindings>

          <invoker-proxy-binding-name>http</invoker-proxy-binding-name>
          <jndi-name>UserSessionBean</jndi-name>

          </invoker-bindings>

          ...
          <invoker-proxy-bindings>
          <invoker-proxy-binding>
          http
          <invoker-mbean>jboss:service=invoker,type=http</invoker-mbean>
          <proxy-factory>org.jboss.proxy.ejb.ProxyFactory</proxy-factory>
          <proxy-factory-config>
          <client-interceptors>

          org.jboss.proxy.ejb.HomeInterceptor
          org.jboss.proxy.SecurityInterceptor
          org.jboss.proxy.TransactionInterceptor
          org.jboss.invocation.InvokerInterceptor


          org.jboss.proxy.ejb.StatefulSessionInterceptor
          org.jboss.proxy.SecurityInterceptor
          org.jboss.proxy.TransactionInterceptor
          org.jboss.invocation.InvokerInterceptor

          </client-interceptors>
          </proxy-factory-config>
          </invoker-proxy-binding>
          </invoker-proxy-bindings>
          ...


          Hope that helps.
          Didi

          • 2. Re: JBoss 3.2.1, RMI over HTTP
            realise

            Many Many Thanks for this!

            It turns out that we don't have to make *any* changes to the JBoss configuration whatsoever...

            This makes sense - if you had a large cluster of JBoss services, feeding multiple clients, then you ought not to be "hobbling" JBoss to work RMI in any particular way...

            The secret is to get your Beans to tell JBoss how to communicate with them (as in your example) and tell your web server to invoke all JNDI calls over the JNDIFactory servlet.

            I imaging you might have to explicity state your invoker addresses in http-invoker.war, but we have found in practice that each installation can build this URL on its own.

            Once again, many thanks.

            Regards,

            Seumas