Commons ID has been in the sandbox for a year already?  Ugh, someone get a
release out! :)

I think the solution I used is going to suffice nicely.  I mean, in a
cluster each machine still has a unique IP address anyway, so that in and
of itself would have been enough.  But, adding in the VMID and current
time makes it even MORE certain to be unique.  Plus, in reading the
Commons ID page, that's very similar to how it is generating the UUIDs
anyway.

Thanks again, I very much appreciate the insight Martin!

-- 
Frank W. Zammetti
Founder and Chief Software Architect
Omnytex Technologies
http://www.omnytex.com

On Fri, March 18, 2005 12:53 pm, Martin Wegner said:
> Frank,
>
> I was a little hinky myself about using Common ID in production.  But I've
> been using it or over a year and it has performed admirably.  We haven't
> seen any problems with the package.
>
> As for getting the MAC address I had to solve that problem about six
> months ago.  I had to resort to Runtime.getRuntime().exec() (yuck).  Here
> is where the madness all started:
>
>    http://forum.java.sun.com/thread.jsp?forum=4&thread=245711
>
> It is ugly but it does indeed work.  Until you run on a box that is not
> using English.  And then you have the fun of boxes that have VPN software
> installed.  And you have to watch out for disconnected media.  Etc.  Etc.
> Etc.
>
> Anyway, I got it work and now I pluck the MAC address from the local box.
> It is ugly but I had to do it.
>
> If anyone has a better way of getting the MAC address I would like to
> know.
>
>
> --Marty
>
> --- "Frank W. Zammetti" <[EMAIL PROTECTED]> 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
>> > <[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]
>> >
>> >
>>
>>
>> ---------------------------------------------------------------------
>> 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]
>
>


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

Reply via email to