This week's book giveaway is in the Other Open Source APIs forum. We're giving away four copies of Storm Applied and have Sean Allen, Peter Pathirana & Matthew Jankowski on-line! See this thread for details.
Guys, although I do not come here to post my questions quite often (not on daily basis), I got the greatest assistant here in JavaRanch bulletin. I am so happy to see the "P" hanging on the certification website, and I would like to thank you all. It took about 1 week to get the result. I am very much satisfied with the score, especially I got full score in locking. All of my deduction is from "General Consideration", and I am wondering about the possible cause. Grade: P Score: 368 Comment: This report shows the total number of points awarded for each section. The maximum number of points is 400, to pass you need a score of 320. Section Summary: Section Max Actual Points Points General Con: 100 68 Documentation: 70 70 OOD: 30 30 GUI: 40 40 Locking: 80 80 Data Store: 40 40 Network Server: 40 40 Total: 400 368
Thank you guys again, now I am a SCJDer too!!
I play Java for fun.<br /> <br />SCJP / SCJD / SCWCD / SCBCD
Congratulations Chang, especially for the perfect locking score. It seems unusual to see a score like yours where there is such a significant deduction under General Considerations while everything else scores perfect. It's very puzzling !!??
kktec<br />SCJP, SCWCD, SCJD<br />"What we observe is not nature itself, but nature exposed to our method of questioning." - Werner Heisenberg
I agree, quite a mystery. Was your approach overly simplistic, or the opposite - complex? But it's still a wonderful, if weird, outcome. Congratulations! [ April 13, 2004: Message edited by: Barry Gaunt ]
I guess the 32 deduction means "big mistake" x 1 in that subitem. However, since the deduction is from general consideration, I am thinking if it is because something like property file design, logging. Is there any channel to suggest SUN at least provide one line of exam comments for SCJD; otherwise we do no know where to improve.
Hi YungSheng, first of all congrats Can you answer us a couple of questions please. 1. Can you give us an overview of your locking mechanism? 2. Did you deal client crashing? 3. Did you implement safe server shutdown? Any comments would be greatly appreciated. Thanks.
Joined: Jul 28, 2003
Hi Satish: I think the successful factor for locking is "good documentation". For most people including me, if they do not implement client crash, the physical code for locking is really short. However, you have to show the assessor all of your consideration in choice.txt and javadoc. Because my english is quite poor, I list my design detail one by one. It is easy for assessor to read and make sure "this guys knows what he is doing". I did not implement clien crash. But I left a room for future extension with the same object design, and document all my reasons. Yes I did save saver shutdown in server gui. And I handle this scenario on client side well too. I have some general suggestion about locking: 1. Do not implement client crash. It will makes things complex, quite complex. 2. Definetely test it. Is the record really locked when you think it should be? and the waiting? and unlock? 3. If you really don't know where to start (like me), look at Max's book. This guy really points out a way for us. The following is my locking mechanism: 1. Class Architecture: Network clients access the same remote database connection object (Database) through RMI. Object Database wraps MyDBAccessAdapter, which executes the locking/unlocking. This means that locking/unlocking is hidden from clients. Clients are forced to follow lock/unlock procedure. 2. Contract for the use of locking process: To use lock/unlock, the method must follow lock/process/unlock contract. Unlock should be guaranteed to be executed under any exception. In the lock/unlock method, the thread should first acquire the exclusive use of LockManager object, and notify all thread waiting on it after it finishes operation. 3. LockManager class: A static LockManager class is used. A logical key-value mapping relationship is maintained by LockManager.The key is the locking record number, the value is its corresponding LockMessage value. The LockMessage stores information about cookie value, thread name and lock time. Cookie value and thread name is checked while unlocking is called to verify the unlocking authority.
Joined: Aug 12, 2003
Hi YungSheng, Thanks for the very detailed reponse. I really appreciate it.