InetAddress might not get the answer for you, Frank.  I don't know
what your setup is, but you can go to any ip address service outside
your system and get a unique return address for your machines with a
mini-browser.

Jack


On Fri, 18 Mar 2005 11:36:10 -0500 (EST), Frank W. Zammetti
<[EMAIL PROTECTED]> wrote:
> Yes, I think InetAddress just might do the trick.  Thank you Kris!
> 
> --
> Frank W. Zammetti
> Founder and Chief Software Architect
> Omnytex Technologies
> http://www.omnytex.com
> 
> On Fri, March 18, 2005 11:24 am, Kris Schneider said:
> > Will InetAddress.getLocalHost() work for you?
> > NetworkInterface.getNetworkInterfaces() might also be of interest. Or, you
> > might want to create yourself an instance of java.rmi.dgc.VMID...
> >
> > Quoting "Frank W. Zammetti" <[EMAIL PROTECTED]>:
> >
> >> Oh boy, I got a good one!  It's only related to Struts in that the
> >> application in question is Struts-based, so I hope no one minds a
> >> semi-OT
> >> question...
> >>
> >> Here's the situation... An app I wrote has a daemon thread that is
> >> spawned
> >> at startup (from a Struts plugin) that does periodic background
> >> processing
> >> tasks.  This works great, never had a bit of trouble.
> >>
> >> Now though, the app is moving from a single server to a clusted
> >> environment.
> >>
> >> So, what's going to happen is that each server in the cluster will have
> >> its own instance of the thread running on it.  Not a huge problem except
> >> that I have to be sure only one instance of the thread (i.e., one server
> >> in the cluster) is executing concurrently.
> >>
> >> The easy solution is just a database table that is checked when the
> >> thread
> >> wakes up.  If there is no entry in it, then there is no other instance
> >> running, so it can write an entry to the table and go off and do its
> >> thing.
> >>
> >> I want to be extremely certain that no issues arise in terms of one
> >> instance of the thread reading from the database while another instance
> >> is
> >> writing, etc.  So, aside from transactional database calls and row-level
> >> locking, I want to do one more thing: I want the thread to sleep a
> >> random
> >> number of seconds (1-300) at startup.  This will ensure that, all the
> >> database locking and such aside, the threads should all be offset from
> >> one
> >> another in terms of when they run.
> >>
> >> So, I need a random number generated when the thread starts up.  As we
> >> all
> >> know though, random number generation on most computers that don't have
> >> something like a Brownian motion sensor attached stuck in a cup of
> >> boiling
> >> coffee can't generate truly random numbers.  So, in theory, what could
> >> happen is that if all the servers in the cluster come up at the same
> >> time,
> >> the threads could wind up running at the same time regardless of the
> >> random sleep at the start!  It might never happen in reality, small
> >> fluctuations would probably offset them anyway, but I want to be more
> >> certain than that.
> >>
> >> So now we're at the crux of the problem...
> >>
> >> I can't just seed the random number generator with the current time
> >> because it concievably might not be random enough.  So, I thought I
> >> could
> >> just tally up the octets of the server's IP address and add that to the
> >> current time.  Then the seed on each server should be different enough.
> >>
> >> But, there doesn't appear to be any way to get the server IP address
> >> independant of a request, so I can't get at it in my plugin.  Anyone
> >> know
> >> differently?
> >>
> >> Assuming that is the case, can anyone think of any other way to seed the
> >> generator that would ensure a different value on different machines in
> >> the
> >> cluster?  There are some options like encoding the individual server
> >> names
> >> in my app's config file with a different seed value for each, but that
> >> makes maintenance a pain if a new server is added or one removed or
> >> addresses simply changed.
> >>
> >> Any ideas?  Thanks!
> >>
> >> --
> >> Frank W. Zammetti
> >> Founder and Chief Software Architect
> >> Omnytex Technologies
> >> http://www.omnytex.com
> >
> > --
> > Kris Schneider <mailto:[EMAIL PROTECTED]>
> > D.O.Tech       <http://www.dotech.com/>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


-- 
"You can lead a horse to water but you cannot make it float on its back."
~Dakota Jack~

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to