[jboss-user] [Remoting] - Re: Problems after Migration from WebSphere to JBoss (Broken

ron.sigal@jboss.com do-not-reply at jboss.com
Thu Jul 16 17:36:24 EDT 2009


Hi Markus,

I've seen some similar firewall issues lately, and I can make some suggestions:

"dahm" wrote : 
  | Remarkable settings on the server side:
  | 
  | in bisocket-remoting.xml: Enabled pings
  | 
  | 
  |   | <attribute name="pingFrequency" isParam="true">60000</attribute>
  |   | <attribute name="pingWindowFactor" isParam="true">2</attribute>
  |   | 
  | 

These parameters turn on a control connection test facility in the bisocket transport, and we've seen problems with it lately.  The fact is that the JBossMessaging code has never used it (they turned it off, in effect, by making the ping frequency "infinite"), so it's never really been tested in the context of JBossMessaging.  I assume your goal in turning it on was to keep the connection alive in the context of the firewall, and I would suggest something like:


  |  <attribute name="pingFrequency" isParam="true">60000</attribute>
  |  <attribute name="pingWindowFactor" isParam="true">MAX_INT / 60000</attribute>
  | 

(where, of course, MAX_INT / 60000 is replaced by an actual integer).  This sets the window in which the ping is expected to "infinity", so that you get the pinging without the possibility of a late ping.

"dahm" wrote : 
  | We checked that with the firewall and network people and they said that idle connections will be closed after 1 hour.
  | We built an keep alive client which sends a message to itself (via the server of course)
  | every 3 minutes and waits for it 10 seconds. If it does not receive the message it will display a message to the user
  | and restart the connection to the topic. 
  | 

What's happening, I guess, is that the firewall is killing a connection, but the Remoting client tries to use it anyway, right?  The problem with the "keep alive client", though, is that the Remoting bisocket transport uses a pool of connections, and there's no guarantee that the keep alive client will use, and keep alive, all of them.

Here's an alternative suggestion.  I made it recently in another context and haven't gotten any feedback yet, but it's something to try.  If a Remoting invocation results in a SocketException, the invocation will be retried if the parameter "numberOfCallRetries" is set to a value greater than 1.  Now, "numberOfCallRetries" is explicitly set to 1 in the "do not change" section of remoting-bisocket-service.xml, but it seems like a reasonable thing to try.  

Here's yet another untested suggestion.  If you set the parameter "idleTimeout" to a value "n" > 0, then a thread on the server will periodically wake up and shut down any ServerThreads that have been idle for more than "n" seconds.  Since the ServerThread's socket will get closed, the client should avoid using that connection.

"dahm" wrote : 
  | We found that using remoting 2.5.2 may be an issue, should we go back to the 2.2 branch?
  | 

The fact is that AS 4.2 hasn't been tested, by us, with Remoting 2.4/2.5.  I'm not aware of any reason wh AS 4.2 shouldn't work with Remoting 2.4/2.5, but going back to the 2.2 branch is a viable strategy in the face of problems.  However, in this case, I suspect you'd see the same firewall issues.

Let us know how it goes.

-Ron

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4244173#4244173

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4244173



More information about the jboss-user mailing list