struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dakota Jack <dakota.j...@gmail.com>
Subject Re: Interesting problem...
Date Fri, 18 Mar 2005 18:09:15 GMT
The class works, but I don't think it is what you want.  Maybe it is. 
Just don't have high expectations.  I did and was disappointed.  Just
trying to help you out, Radar!  ///;-)

Jack


On Fri, 18 Mar 2005 12:21:28 -0500 (EST), Frank W. Zammetti
<fzlists@omnytex.com> wrote:
> Why do you think it wouldn't work?  Does it sometimes return incorrect
> information in some setups?
> 
> I thought of doing some kind of mini-browser-type thing, but before I go
> down that road I wanted to explore some simpler solutions.  The Commons ID
> thing is very nice, but I'm not so sure I'm comfortable putting in
> something that isn't actually released yet.
> 
> That being said, what was on the site for it got me to thinking... I think
> if I do a combination of the sum of the MAC address digits + the current
> time + the hashCode of the IP address, that is probably as random as I
> need.  But, if you know something about InetAddress that would make this
> not work, I'm all ears :)
> 
> Of course, I'm not sure how to get the MAC address yet, but one problem at
> a time...
> 
> --
> Frank W. Zammetti
> Founder and Chief Software Architect
> Omnytex Technologies
> http://www.omnytex.com
> 
> On Fri, March 18, 2005 12:14 pm, Dakota Jack said:
> > 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
> > <fzlists@omnytex.com> 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" <fzlists@omnytex.com>:
> >> >
> >> >> 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:kris@dotech.com>
> >> > D.O.Tech       <http://www.dotech.com/>
> >> >
> >> > ---------------------------------------------------------------------
> >> > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> >> > For additional commands, e-mail: user-help@struts.apache.org
> >> >
> >> >
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> >> For additional commands, e-mail: user-help@struts.apache.org
> >>
> >>
> >
> >
> > --
> > "You can lead a horse to water but you cannot make it float on its back."
> > ~Dakota Jack~
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> > For additional commands, e-mail: user-help@struts.apache.org
> >
> >
> 
> 


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

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Mime
View raw message