One thing that comes to mind for me is bit in the instructions that state at most only one program is accessing the database. I used that assumption to my advantage when I, I'd like to think, ensured my application is threadsafe. What I didn't do is ensure that it's not possible for multiple clients to access the database, by clients I mean database clients not gui clients. So you're running a server, and start a client in local mode accessing the same database, what behaviour can you expect? Do you allow a 2nd client to connect? According to my instructions I shouldn't have to worry about that, but perhaps it's expected that we cater for it in some way or another such as opening the file exclusively and throwing the exception when it's open. Has anyone actually scored 100% without catering for this scenario? Because that would rule out this possibility. [ August 17, 2005: Message edited by: Ta Ri Ki Sun ]
Hi all, I'm still worried about the marking of Thead-safety policy: I've read some threads here in javaranch and I allow myself to submit the template I currently use in my code.
Obv., I adopts the DBAdaapter pattern and so no. Each time I refer to the Data instance I do something like this:
This template ensures that each time a lock() is called, its unlock() will be called at the end of the method, whatever the exceptions raised from within the try block (which are also declared in DBAdapter method signature).
Of course, there could be some issues if either lock or (specially) unlock would raise some exceptions, but I simplified these methods in Data to remove the RecordNotFoundException declaration, since this will be raised from other calls to Data methods (e.g.: data.read(recNo)): this allows the locking of a new recNo, for example.
I'd appreciate any comments about this template.
Thanks guys. DM
author and jackaroo
This sounds like it is only tangentially related to TQ's original question, so you might be better off raising it in a new topic - you may get more responses (as you can see, there were not many responses in this particular topic).
I presume that the try...finally block is operating on the server - is that correct?
I simplified these methods in Data to remove the RecordNotFoundException declaration
I'm misunderstanding this somehow. I believe that if you do that, you cannot implement the interface that Sun gave you, which I understand will cause instantaneous failure.