9 Replies Latest reply on Feb 17, 2009 4:20 PM by Ian Nelson

    With SSLBisocket is there is java.rmi.server.hostname or som

    Ian Nelson Newbie

      I've been using it successfully for about a year now, I recently changed my server side to bind to 0.0.0.0 instead of the specific IP address we were using before.

      Now when some clients try to connect, when they client.addListener(..) they attempt to connect to that host via the DNS name of the server which seems to be wrong (well, it's not in DNS so they can't resolve it)

      With RMI there is java.rmi.server.hostname where you can put in an IP address for the server to use, is there an equivalent?

      thanks,
      Ian

        • 1. Re: With SSLBisocket is there is java.rmi.server.hostname or
          Ian Nelson Newbie

          Okay, I'm stupid.. It's the multihome stuff that I need to use.

          • 2. Re: With SSLBisocket is there is java.rmi.server.hostname or
            Ian Nelson Newbie


            Now I have a legitimate question:

            I have a dual homed server with 10.12.2.8 and 10.12.2.50 as it's IP addresses. I create a bisocket connector with the following URI:

            sslbisocket://multihome:7777/foobar/services?datatype=serializablehomes=10.12.2.50:7777!10.12.2.8:7777&serializationtype=jboss


            and I get an Index exception:
            java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
            at java.util.ArrayList.RangeCheck(Unknown Source)
            at java.util.ArrayList.get(Unknown Source)
            at org.jboss.remoting.transport.bisocket.BisocketServerInvoker.start(BisocketServerInvoker.java:285)
            at org.jboss.remoting.transport.Connector.start(Connector.java:340)
            at com.rovingplanet.npe.server.NPEManager.remoteConnectorSetup(NPEManager.java:851)
            at com.rovingplanet.npe.server.NPEManager.startService(NPEManager.java:929)
            at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
            at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
            at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)



            It's looking through the secondary port list. If I add a connect_home then it works but I can only connect to the connect_home. If I add both IPs to the connect_home then I get the same exception. How can I make it able to connect to both IPs? What's with the secondary port list?

            thanks,
            Ian



            • 3. Re: With SSLBisocket is there is java.rmi.server.hostname or
              Ron Sigal Master

              Hi Ian,

              Haven't heard from you for a while. Hope that's a good sign. :)

              sslbisocket://multihome:7777/foobar/services?datatype=serializablehomes=10.12.2.50:7777!10.12.2.8:7777&serializationtype=jboss
              


              If that's an exact copy, then you're just missing a '&' between "serializable" and "homes".

              -Ron

              • 4. Re: With SSLBisocket is there is java.rmi.server.hostname or
                Ian Nelson Newbie

                 

                "ron.sigal@jboss.com" wrote:
                Hi Ian,

                Haven't heard from you for a while. Hope that's a good sign. :)



                It is. Our product is coming along nicely.


                sslbisocket://multihome:7777/foobar/services?datatype=serializablehomes=10.12.2.50:7777!10.12.2.8:7777&serializationtype=jboss
                


                If that's an exact copy, then you're just missing a '&' between "serializable" and "homes".

                -Ron


                I think it got mangled in the cut and paste. I used InvokerLocator to create the URI and it actually does have an ampersand in my logs.

                This is with 2.5.0SP2. It creates sockets on both IP addresses but clients can only attach callback handlers to the one listed in connect_homes. If I put 2 IPs in connect home I get the index exception and if I don't use a connect homes I get the index exception. I've only glanced at it but it's trying to get a port from the secondary ports list.



                • 5. Re: With SSLBisocket is there is java.rmi.server.hostname or
                  Ron Sigal Master

                   

                  "TheNelson" wrote:

                  It is. Our product is coming along nicely.


                  That's great. We'd be happy to hear about your product and how you're using Remoting.

                  I'll get back to you about the "connecthomes" problem.

                  • 6. Re: With SSLBisocket is there is java.rmi.server.hostname or
                    Ian Nelson Newbie

                    I should be a little bit careful. I work for Tippingpoint and we make network security products. We're using remoting for communication between nodes in a distributed policy system, the remote nodes control firewalls and things like that and then the central node (now becoming a cluster) makes the policy decisions.

                    There was a bit of a learning curve, especially since I like to read docs after exhausting other resources, but it's been rock solid once we figured it all out.

                    • 7. Re: With SSLBisocket is there is java.rmi.server.hostname or
                      Ron Sigal Master

                       

                      "theNelson" wrote:

                      it's been rock solid once we figured it all out.


                      Testimonial from an actual customer. :)

                      Thanks, Ian. I'm very happy it's working for you. And I'll pass your words on to Tom Elrod, the project's founder.

                      -Ron

                      • 8. Re: With SSLBisocket is there is java.rmi.server.hostname or
                        Ron Sigal Master

                        Hi Ian,

                        Well, I just ran a test with the InvokerLocator

                        sslbisocket://multihome:7777/foobar/services?datatype=serializable&homes=192.168.2.2:7777!10.11.12.119:7777&serializationtype=jboss
                        


                        and didn't have any problems.

                        Looking at the code, in the absence of any explicit parameters, it should be the case that

                        # of server sockets == # of homes == # of connect homes == # of secondary bind ports == # of secondary connect ports.
                        


                        Could you run your code with TRACE logging for org.jboss.remoting and look for any related messages?

                        TheNelson" wrote:

                        clients can only attach callback handlers to the one listed in connect_homes.


                        Just to be sure, note that the parameter should be "connecthomes".

                        "TheNelson" wrote:

                        What's with the secondary port list?


                        The motivation for the bisocket transport was to allow the server to connect to the client without having a ServerSocket on the client. So, the bisocket client creates a "control" connection by connecting to a server side secondary ServerSocket bound to a secondary port, and, when, the server wants to get a socket connected to the client, it sends a request on the control connection, which causes the client to connect to the secondary ServerSocket to create the socket. OK so far? Two more points.

                        1. There's a secondary ServerSocket, each bound to a secondary bind host/port address, for each "primary" ServerSocket. The client asks for a list of secondary ServerSockets, and it can attempt to connect to any of them.

                        2. If there's a firewall between the client and the server, then the server should be configured with a"connecthomes" list. The BisocketServerInvoker will take the hosts from the "connecthomes" list, associate each host with a port from the "secondaryConnectPorts" list (or an anonymous port if there is no configured value for "secondaryConnectPorts"), and create a list of addresses for the client to use to create the control connection.

                        -Ron

                        • 9. Re: With SSLBisocket is there is java.rmi.server.hostname or
                          Ian Nelson Newbie

                          I haven't forgot this, I have just been tasked in a different direction. I'll recreate this this week.

                          Ian