4 Replies Latest reply on Nov 13, 2013 3:26 AM by Flemming Harms

    JBoss Messaging/Remoting stop working if one of the two network interfaces is disconnected

    Flemming Harms Novice

      Hello,


      I’m investigating a network issue between our client and server(JBoss5 cluster) with jboss messaging 1.4.3.SP9 and remoting 2.5.4.SP2 stops sending heartbeats if one of the network interfaces is disconnected.


      We have client both on the WIFI and eth0 network and a topic jms connection is establish to the server. Through WireShark we can see it sending heartbeats on the eth0 to both servers and netstat indicate it has establish a connection on the eth0 interface


      If we disconnect eth0 after a while the heartbeat that was broadcast on eth0 of course stops, but the strange thing is the control service does not seem discover a heartbeat is not sent and received on anymore on the client. WireShark indicate no communication on the control port on the working network interface and no exception is throwed in the client.


      In fact JBoss Messaging think everything is okay, but messages is never arriving on the client.


      Could this be a configuration issue or does the JBoss Messaging / Remoting not support multiple network interfaces?


      <?xml version="1.0" encoding="UTF-8"?>
      
      
      <!--
           Standard bisocket-based Remoting service deployment descriptor.
      
      
           $Id: remoting-bisocket-service.xml 3981 2008-03-28 18:00:41Z timfox $
       -->
      
      
      <server>
      
      
         <!-- Standard bisocket connector - the bisocket transport only opens connection from client->server
              so can be used with firewalls where only outgoing connections are allowed.
              For examples of HTTP and SSL transports see docs/examples -->
         <mbean code="org.jboss.remoting.transport.Connector"
                name="jboss.messaging:service=Connector,transport=bisocket"
                display-name="Bisocket Transport Connector">
            <attribute name="Configuration">
               <config>
                  <invoker transport="bisocket">
                  
                     <!-- There should be no reason to change these parameters - warning!
                          Changing them may stop JBoss Messaging working correctly -->            
                     <attribute name="marshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
                     <attribute name="unmarshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
                     <attribute name="dataType" isParam="true">jms</attribute>
                     <attribute name="socket.check_connection" isParam="true">false</attribute>               
              <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
                     <attribute name="serverBindPort">${jboss.messaging.connector.bisocket.port:4457}</attribute>
                     <attribute name="clientConnectAddress">${jgroups.bind_addr}</attribute>
                     <attribute name="clientSocketClass" isParam="true">org.jboss.jms.client.remoting.ClientSocketWrapper</attribute>
                     <attribute name="serverSocketClass">org.jboss.jms.server.remoting.ServerSocketWrapper</attribute>
                     <attribute name="onewayThreadPool">org.jboss.jms.server.remoting.DirectThreadPool</attribute>
      
      
                     <!-- the following parameters are useful when there is a firewall between client and server. Uncomment them if so.-->
      
      
                     <attribute name="numberOfCallRetries" isParam="true">2</attribute>
                     <attribute name="pingFrequency" isParam="true">214748364</attribute>
                     <attribute name="pingWindowFactor" isParam="true">10</attribute>
                     <attribute name="generalizeSocketException" isParam="true">true</attribute>
      
      
      
                     <!-- Now remoting supports socket write timeout configuration. Uncomment this if you need it. -->
                     <!--
                     <attribute name="writeTimeout" isParam="true">30000</attribute>
                     -->
      
      
                     <!-- End immutable parameters -->
      
      
                     <attribute name="stopLeaseOnFailure" isParam="true">true</attribute>
      
      
                     <!-- Periodicity of client pings. Server window by default is twice this figure -->
                     <attribute name="clientLeasePeriod" isParam="true">25000</attribute>
                     <attribute name="validatorPingPeriod" isParam="true">20000</attribute>
                     <attribute name="validatorPingTimeout" isParam="true">15000</attribute>
      
      
                     <attribute name="failureDisconnectTimeout" isParam="true">0</attribute>
                     <attribute name="callbackErrorsAllowed">2</attribute>
                     <attribute name="registerCallbackListener">false</attribute>
                     <attribute name="useClientConnectionIdentity" isParam="true">true</attribute>
      
      
                     <attribute name="timeout" isParam="true">10000</attribute>
      
      
                     <!-- Max Number of connections in client pool. This should be significantly higher than
                          the max number of sessions/consumers you expect -->
                     <attribute name="JBM_clientMaxPoolSize" isParam="true">200</attribute>
                     
                     <!-- The maximum time to wait before timing out on trying to write a message to socket for delivery -->
                     <attribute name="callbackTimeout">10000</attribute> 
                     
                     <!-- Use these parameters to specify values for binding and connecting control connections to 
                          work with your firewall/NAT configuration -->
                     <attribute name="secondaryBindPort">4460</attribute>                           
                     <attribute name="secondaryConnectPort">4460</attribute>               
                                
                  </invoker>
                  <handlers>
                     <handler subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>
                  </handlers>
               </config>
            </attribute>
         </mbean>
      


      Thanks!

       

      br

      Flemming

        • 1. Re: JBoss Messaging/Remoting stop working if one of the two network interfaces is disconnected
          Flemming Harms Novice

          I noticed the control socket in some cases never close, even if it has no network link anymore.

           

          First I started with creating a JMS connection on the client with 2 network interfaces with link and IP’s “10.81.82.31” & “10.18.82.58” the connection is establish on “10.18.82.58” to destination “10.81.80.34” & “10.81.80.38”.

           

          Second I pull the network link from “10.18.82.58” and would expect it use the “10.81.82.31” instead. The tool “lsof” list that it has establish connection on “10.81.82.31” but there is NO communication on port 4460. (tested with wireshark)

           

          The odd thing is the socket on “10.18.82.58:4460” is never terminated.


          “10.81.82.58:59613->10.81.80.34:4460 (SO=PQLEN=0,QLEN=0,QLIM=0,RCVBUF=1054136,SNDBUF=1054144 SS=UNKNOWN=0x2 TF=MSS=1448,UNKNOWN=0x440083e0)”
          


          Could it be that for some reason when it try to create a new socket it actually try to reuse the old

          socket on 10.18.82.58 and fail?


          java      22784  TCP 10.81.82.31:59881->10.81.80.34:4457 (SO=KEEPALIVE=7204582,PQLEN=0,QLEN=0,QLIM=0,RCVBUF=1048904,SNDBUF=1054144 SS=UNKNOWN=0x2 TF=MSS=1448,UNKNOWN=0x440083e0)
          java      22784  TCP 10.81.82.31:59882->10.81.80.38:4457 (SO=KEEPALIVE=7200002,PQLEN=0,QLEN=0,QLIM=0,RCVBUF=1052432,SNDBUF=1054144 SS=UNKNOWN=0x2 TF=MSS=1448,UNKNOWN=0x440083e0)
          java      22784  TCP 10.81.82.31:59879->10.81.80.38:4457 (SO=KEEPALIVE=7209983,PQLEN=0,QLEN=0,QLIM=0,RCVBUF=1050616,SNDBUF=1054144 SS=UNKNOWN=0x22 TF=MSS=1448,UNKNOWN=0x440083e0)
          java      22784  TCP 10.81.82.31:59650->10.81.80.38:4460 (SO=PQLEN=0,QLEN=0,QLIM=0,RCVBUF=1054144,SNDBUF=1054144 SS=UNKNOWN=0x2 TF=MSS=1448,UNKNOWN=0x440083e0)
          java      22784  TCP 10.81.82.31:59651->10.81.80.38:4460 (SO=PQLEN=0,QLEN=0,QLIM=0,RCVBUF=1054144,SNDBUF=1054144 SS=UNKNOWN=0x2 TF=MSS=1448,UNKNOWN=0x440083e0)
          java      22784  TCP 10.81.82.58:59613->10.81.80.34:4460 (SO=PQLEN=0,QLEN=0,QLIM=0,RCVBUF=1054136,SNDBUF=1054144 SS=UNKNOWN=0x2 TF=MSS=1448,UNKNOWN=0x440083e0)
          


          Any thoughts?


          • 2. Re: JBoss Messaging/Remoting stop working if one of the two network interfaces is disconnected
            Ron Sigal Master

            Hi Flemming,

             

            I think the problem might be here:

             

              <attribute name="pingFrequency" isParam="true">214748364</attribute>

             

            In effect, the default JBossMessaging configuration disables pinging on the control connection by setting the frequency to "infinity".  If you set "pingFrequency" to something like 30000, to pick a number, Remoting's bisocket transport will actually check for a ping and try to recreate the control connection if the configured window passes without a ping.  A ping is expected within pingWindowFactor X pingFrequency milliseconds.  You might also lower the value of "pingWindowFactor".


            -Ron

            • 3. Re: Re: JBoss Messaging/Remoting stop working if one of the two network interfaces is disconnected
              Flemming Harms Novice

              Hi Ron

               

              Thanks for your reply.

               

              I have tried what you suggested and many other tests with different settings with no luck. In my first test where I disconnect the link on eth0, and eth1 should take over seems to work. But when I do the test with connecting the eth0 again and disconnect eth1 I always fails and it stops receiving messages

               

              I have attach my latest changes to remoting-bisocket-service.xml and I have tried numberOfCallRetries with the value 1, 2 and 10. I have also have attach a snippet of a TRACE out. It keep getting “Read timed out” on the socket and it never get’s out of this mode.


              Any other suggestions ?

               

              From the remoting-bisocket-service.xml :

              <attribute name="socket.check_connection" isParam="true">true</attribute>
              <attribute name="keepAlive" isParam="true">true</attribute>
              <attribute name="numberOfCallRetries" isParam="true">10</attribute>
              <attribute name="pingFrequency" isParam="true">30000</attribute>
              <attribute name="pingWindowFactor" isParam="true">1</attribute>
              <attribute name="generalizeSocketException" isParam="true">true</attribute>
              


              TRACE from a test with disconnection the eth link

              2013-11-12 14:56:29,759                 TRACE  [SocketWrapper] NEW ClientSocketWrapper[Socket[addr=/10.81.80.34,port=4457,localport=64245].4b1f5d8c] closing socket 
              2013-11-12 14:56:29,759                 TRACE  [SocketWrapper] NEW ClientSocketWrapper[Socket[addr=/10.81.80.34,port=4457,localport=64245].4b1f5d8c] closed socket 
              2013-11-12 14:56:29,759                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] reusing pooled connection: null 
              2013-11-12 14:56:29,759                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] creating socket  
              2013-11-12 14:56:29,760                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] created socket: Socket[addr=/10.81.80.34,port=4457,localport=64248] 
              2013-11-12 14:56:29,760                 TRACE  [SocketWrapper] constructing org.jboss.jms.client.remoting.ClientSocketWrapper instance for Socket[addr=/10.81.80.34,port=4457,localport=64248], using timeout 10000 
              2013-11-12 14:56:29,760                 TRACE  [SocketWrapper] NEW ClientSocketWrapper[Socket[addr=/10.81.80.34,port=4457,localport=64248].5a2bf583] setting timeout to 10000 
              2013-11-12 14:56:29,760                 TRACE  [ClientSocketWrapper] NEW ClientSocketWrapper[Socket[addr=/10.81.80.34,port=4457,localport=64248].5a2bf583] getting output stream from Socket[addr=/10.81.80.34,port=4457,localport=64248], org.jboss.jms.wireformat.JMSWireFormat@5fc02db5 
              2013-11-12 14:56:29,760                 TRACE  [SocketWrapper] NEW ClientSocketWrapper[Socket[addr=/10.81.80.34,port=4457,localport=64248].5a2bf583] setting timeout to 10000 
              2013-11-12 14:56:29,760                 TRACE  [ClientSocketWrapper] reset timeout: 10000 
              2013-11-12 14:56:29,760                 TRACE  [ClientSocketWrapper] NEW ClientSocketWrapper[Socket[addr=/10.81.80.34,port=4457,localport=64248].5a2bf583] getting output stream from Socket[addr=/10.81.80.34,port=4457,localport=64248], org.jboss.jms.wireformat.JMSWireFormat@5fc02db5 
              2013-11-12 14:56:29,760                 TRACE  [SocketWrapper] NEW ClientSocketWrapper[Socket[addr=/10.81.80.34,port=4457,localport=64248].5a2bf583] setting timeout to 10000 
              2013-11-12 14:56:29,760                 TRACE  [ClientSocketWrapper] reset timeout: 10000 
              2013-11-12 14:56:29,760                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] got socketWrapper: NEW ClientSocketWrapper[Socket[addr=/10.81.80.34,port=4457,localport=64248].5a2bf583] 
              2013-11-12 14:56:29,760                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457]got outputStream: java.io.DataOutputStream@5cfe7cca 
              2013-11-12 14:56:29,760                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] writing version 
              2013-11-12 14:56:29,760                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] writing version 22 on output stream 
              2013-11-12 14:56:29,760                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] wrote version 
              2013-11-12 14:56:29,760                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] writing invocation to marshaller 
              2013-11-12 14:56:29,760                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] done writing invocation to marshaller 
              2013-11-12 14:56:29,760                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] reading version from input stream 
              2013-11-12 14:56:29,761                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] read version 22 from input stream 
              2013-11-12 14:56:29,761                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] reading response from unmarshaller 
              2013-11-12 14:56:29,762                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] returned NEW ClientSocketWrapper[Socket[addr=/10.81.80.34,port=4457,localport=64248].5a2bf583] to pool 
              2013-11-12 14:56:29,762                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] released semaphore: 50 
              2013-11-12 14:56:29,762                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] received response InvocationResponse[30f0b20e, InvocationResponse[a39ce3c, true]] 
              2013-11-12 14:56:29,762                 TRACE  [MicroRemoteClientInvoker] SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] received InvocationResponse so going to return response's return value of InvocationResponse[a39ce3c, true] 
              2013-11-12 14:56:29,762                 TRACE  [ConnectionValidator] ConnectionValidator got successful ping using SocketClientInvoker[46938420, bisocket://10.81.80.34:4457] 
              2013-11-12 14:56:30,368                 ERROR  [ServerThread] WorkerThread#0[10.81.80.34:4460] exception occurred during first invocation 
              java.net.SocketTimeoutException: Read timed out
                      at java.net.SocketInputStream.socketRead0(Native Method)
                      at java.net.SocketInputStream.read(SocketInputStream.java:129)
                      at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
                      at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
                      at java.io.FilterInputStream.read(FilterInputStream.java:66)
                      at org.jboss.remoting.transport.socket.ServerThread.readVersion(ServerThread.java:1104)
                      at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:720)
                      at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:548)
                      at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:234)
              2013-11-12 14:56:30,368                 TRACE  [SocketWrapper] ServerSocketWrapper[Socket[addr=/10.81.80.34,port=4460,localport=64246].679f5191] closing socket 
              2013-11-12 14:56:30,368                 TRACE  [SocketWrapper] ServerSocketWrapper[Socket[addr=/10.81.80.34,port=4460,localport=64246].679f5191] closed socket 
              2013-11-12 14:56:30,368                 DEBUG  [ServerThread] WorkerThread#0[10.81.80.34:4460] closed socketWrapper: ServerSocketWrapper[Socket[addr=/10.81.80.34,port=4460,localport=64246].679f5191] 
              2013-11-12 14:56:30,368                 TRACE  [ServerThread] WorkerThread#0[10.81.80.34:4460] removing itself from clientpool 
              2013-11-12 14:56:30,368                 TRACE  [ServerThread] WorkerThread#0[10.81.80.34:4460] returning itself to threadpool 
              2013-11-12 14:56:30,368                 TRACE  [ServerThread] WorkerThread#0[10.81.80.34:4460] begins to wait 
              2013-11-12 14:56:34,701                 TRACE  [LeasePinger] LeasePinger[a60241m-5tpzqz-hnx66yh6-1-hnx66yly-6:SocketClientInvoker[7d4e3c21, bisocket://10.81.80.34:4457](a60241m-5tpzqz-hnx66yh6-1-hnx66yl3-5)] sending ping to server. Currently managing lease for following clients:
                  a60241m-5tpzqz-hnx66yh6-1-hnx66ysp-g
                  a60241m-5tpzqz-hnx66yh6-1-hnx66ykp-3
               
              2013-11-12 14:56:34,701                 TRACE  [MicroRemoteClientInvoker] SocketClientInvoker[7d4e3c21, bisocket://10.81.80.34:4457](1) invoking InvocationRequest[5912ca62, $PING$] 
              2013-11-12 14:56:34,701                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[7d4e3c21, bisocket://10.81.80.34:4457] retryCount: 0 
              2013-11-12 14:56:34,701                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[7d4e3c21, bisocket://10.81.80.34:4457] obtained semaphore: 199 
              2013-11-12 14:56:34,701                 TRACE  [SocketClientInvoker] Couldn't reuse connection from pool 
              java.io.IOException: remote endpoint has closed
                      at org.jboss.jms.client.remoting.ClientSocketWrapper.checkOpenConnection(ClientSocketWrapper.java:108)
                      at org.jboss.remoting.transport.socket.SocketClientInvoker.getPooledConnection(SocketClientInvoker.java:226)
                      at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.getConnection(MicroSocketClientInvoker.java:1141)
                      at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:816)
                      at org.jboss.remoting.transport.bisocket.BisocketClientInvoker.transport(BisocketClientInvoker.java:470)
                      at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:169)
                      at org.jboss.remoting.LeasePinger.sendClientPing(LeasePinger.java:416)
                      at org.jboss.remoting.LeasePinger.access$000(LeasePinger.java:19)
                      at org.jboss.remoting.LeasePinger$LeaseTimerTask.run(LeasePinger.java:446)
                      at java.util.TimerThread.mainLoop(Timer.java:512)
                      at java.util.TimerThread.run(Timer.java:462)
              2013-11-12 14:56:34,701                 TRACE  [SocketWrapper] NEW ClientSocketWrapper[Socket[addr=/10.81.80.34,port=4457,localport=64244].79e9ac03] closing socket 
              2013-11-12 14:56:34,701                 TRACE  [SocketWrapper] NEW ClientSocketWrapper[Socket[addr=/10.81.80.34,port=4457,localport=64244].79e9ac03] closed socket 
              2013-11-12 14:56:34,701                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[7d4e3c21, bisocket://10.81.80.34:4457] reusing pooled connection: null 
              2013-11-12 14:56:34,701                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[7d4e3c21, bisocket://10.81.80.34:4457] creating socket  
              2013-11-12 14:56:34,702                 TRACE  [MicroSocketClientInvoker] SocketClientInvoker[7d4e3c21, bisocket://10.81.80.34:4457] created socket: Socket[addr=/10.81.80.34,port=4457,localport=64249] 
              
              
              


              • 4. Re: Re: Re: JBoss Messaging/Remoting stop working if one of the two network interfaces is disconnected
                Flemming Harms Novice

                Hi Ron

                 

                actually I think it is working. I don't know what went wrong in my first test, but I have run multiple tests with success since.

                 

                I forgot to mention I also added the parameter "<attribute name="useServerConnectionIdentity" isParam="true">true</attribute>" based on documentation this parameter will help determine if the connection has been broken.

                 

                This is my current configuration :

                 

                <?xml version="1.0" encoding="UTF-8"?>
                <!--
                     Standard bisocket-based Remoting service deployment descriptor.
                     $Id: remoting-bisocket-service.xml 3981 2008-03-28 18:00:41Z timfox $
                 -->
                <server>
                   <!-- Standard bisocket connector - the bisocket transport only opens connection from client->server
                        so can be used with firewalls where only outgoing connections are allowed.
                        For examples of HTTP and SSL transports see docs/examples -->
                   <mbean code="org.jboss.remoting.transport.Connector"
                          name="jboss.messaging:service=Connector,transport=bisocket"
                          display-name="Bisocket Transport Connector">
                      <attribute name="Configuration">
                         <config>
                            <invoker transport="bisocket">
                               <!-- There should be no reason to change these parameters - warning!
                                    Changing them may stop JBoss Messaging working correctly -->
                               <attribute name="marshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
                               <attribute name="unmarshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
                               <attribute name="dataType" isParam="true">jms</attribute>
                               <attribute name="socket.check_connection" isParam="true">true</attribute>
                               <attribute name="keepAlive" isParam="true">true</attribute>
                               <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
                               <attribute name="serverBindPort">${jboss.messaging.connector.bisocket.port:4457}</attribute>
                               <attribute name="clientConnectAddress">10.81.80.34</attribute>
                               <attribute name="clientSocketClass" isParam="true">org.jboss.jms.client.remoting.ClientSocketWrapper</attribute>
                               <attribute name="serverSocketClass">org.jboss.jms.server.remoting.ServerSocketWrapper</attribute>
                               <attribute name="onewayThreadPool">org.jboss.jms.server.remoting.DirectThreadPool</attribute>
                               <attribute name="useServerConnectionIdentity" isParam="true">true</attribute>
                
                               <!-- the following parameters are useful when there is a firewall between client and server. Uncomment them if so.-->
                
                               <attribute name="numberOfCallRetries" isParam="true">10</attribute>
                               <attribute name="pingFrequency" isParam="true">30000</attribute>
                               <attribute name="pingWindowFactor" isParam="true">1</attribute>
                               <attribute name="generalizeSocketException" isParam="true">true</attribute>
                               <!-- Now remoting supports socket write timeout configuration. Uncomment this if you need it. -->
                               <!-- attribute name="writeTimeout" isParam="true">30000</attribute -->
                
                               <!-- End immutable parameters -->
                               <attribute name="stopLeaseOnFailure" isParam="true">true</attribute>
                
                               <!-- Periodicity of client pings. Server window by default is twice this figure -->
                               <attribute name="leasing" isParam="true">true</attribute>
                               <attribute name="clientLeasePeriod" isParam="true">25000</attribute>
                               <attribute name="validatorPingPeriod" isParam="true">20000</attribute>
                               <attribute name="validatorPingTimeout" isParam="true">15000</attribute>
                
                               <attribute name="failureDisconnectTimeout" isParam="true">0</attribute>
                               <attribute name="callbackErrorsAllowed">2</attribute>
                               <attribute name="registerCallbackListener">false</attribute>
                               <attribute name="useClientConnectionIdentity" isParam="true">true</attribute>
                
                               <attribute name="timeout" isParam="true">10000</attribute>
                
                               <!-- Max Number of connections in client pool. This should be significantly higher than
                                    the max number of sessions/consumers you expect -->
                               <attribute name="JBM_clientMaxPoolSize" isParam="true">200</attribute>
                
                               <!-- The maximum time to wait before timing out on trying to write a message to socket for delivery -->
                               <attribute name="callbackTimeout">10000</attribute>
                
                               <!-- Use these parameters to specify values for binding and connecting control connections to 
                                    work with your firewall/NAT configuration -->
                               <attribute name="secondaryBindPort">4460</attribute>
                               <attribute name="secondaryConnectPort">4460</attribute>
                            </invoker>
                            <handlers>
                               <handler subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>
                            </handlers>
                         </config>
                      </attribute>
                   </mbean>
                </server>