I thought this day would never come. I worked on this for over a year. But I submitted 5 weeks ago, and now I have my result:
Section Summary: Section Max Actual Points Points
General Con: 100 99
Documentation: 70 70
OOD: 30 30
GUI: 40 28
Locking: 80 80
Data Store: 40 24
Network Server: 40 40
Total: 400 371
It's been 5 weeks since I've looked at my project, but I'll try to remember some of the details of what I did.
I knew that a lot of people had trouble with locking, so I really came up with a lot of tests for the locking. I also slammed like 1000 threads of updates/creations/searches at my server all at the same time, which turned up some issues.
I don't really know why I got a low score for my "Data Store". Maybe it was because I had client code doing the record locking. But for the GUI, it could be 3 things.
- While I used comboboxes for my searching, I didn't make the
string searching "exactly match". I explained my thoughts about this in choices.txt, but maybe I was wrong.
- The essay exam asked me for a comparison of a decision, where I never had really considered the other option, so I didn't have much to say about the topic.
- I structured my client startup in a way that if there was no properties file, two error popups would come up. Probably not the cleanest thing in the world. But I figured it would only happen once.
I used the Monkhouse book, as well as Exam Cram which people seem to hate. :-) I like having the different perspectives. I have the Sierra/Bates 1.4 book, which I loved for
SCJP, but I didn't find very helpful for this. I loved learning about ReadWriteLocks in the Monkhouse book, and tried to use them when I could in my project.
My LockManager was a variation of the Monkhouse and EC books, but I had my own spin on it. Part of that is that I would MUCH rather implement having locks time out, than implement any of the methods of releasing crashed client locks that I've read about. I want total control and guaranteed releasing of my locks when I want it. I also implemented a way that would handle multiple clients trying to lock at the same time, rather than telling clients they can't have the lock, which most implementations seem to do. As a user, I'd much rather wait for the lock a little while than get an error that it's locked. This piece is probably out of scope of the project.
I used RMI for my networking. Seemed an obvious choice, plus I wanted to learn RMI.
I can't remember my
patterns off the top of my head, so I won't post that unless someone really wants it.
The killer to this project is that you never know when you're done. There's always some new interpretation of the requirements, or something you think
you should be adding. It goes on forever. As others have said, don't take this certification if you just want something on your resume, as it'll take a while. There are many other faster certs.
I think that's about it. I just wanted to post something here about the decisions I made, because you guys have been such a help for me. I don't know how people pass this exam without reading
Java Ranch. Thank you so much for offering your opinions in this forum. Not only did it help me pass, but it made the whole project interesting. There's just so many ways to think of this project, design, and requirements. While I'm glad it's finally over, it was pretty fun at times. Thank you!!!
And thank you Andrew!! You are the man!
Moving on to the WS cert now... always something!