I am not sure if this the right forum...

Please suggest on what should be the best design practice for running 10 instances of desktop based java applications (No Enterprise or Webcomponents) on different machines BUT still using the same database.

a) Each application will do writes/updates to same database but will run from different locations.
b) These applications will reside at different locations (example country, city) but same domain, so it will use separate JVM.
c) How to tell application where it resides and what should be the best way to determine location automatically from the network? (we would like to avoid any property setting as update will require to change this file also), if database is good approach, what should be the best design.
d) Best way to handle transaction...
for example, if one component that writes to an Oracle table, then a downstream component reads the new insert from the table. In this case what should be the best approach in the code for transaction awareness, to avoid issues.


any properly designed database would handle all that...
If you understood how a transactional system works, you'd know that.

There are no "issues" for example if you employ proper transaction boundaries, iow commit when needed, no sooner and no later.