I took my written exam on 7/19 and just got my results and passed with 94.2%. It helps me a lot by visiting this group's postings constantly. It doesn't really matter what score I received. What it really counts is the learning process of the programming assignment. I never used RMI prior to this assignment, so it gave me a chane to get familiar with that and I found Sun's RMI tutorial is quite helpful. I implemented a RMI callback function to do live updates on the GUI using Observer pattern. I also read several design patterns books and that should help me in the long run in terms of a being a good OO designer. When I worked on the on-line help, I bought a book called "Creating Effective Java Help" to learn more about creating Java Help.
Here are some of the things i did on this assignment: - used RMI for network connection - implemented RMI callback function - used MVC (JTable and AbstractTableModel), Proxy (RMI implementation), Singleton, Observer/Observable, Adapter and Factory design patterns - modified lock/unlock methods - made use of clientID - modified Data class instead of subclassing - provided searching for Origin airport, Destination airport, Carrier and Flight number fields using ComboBoxes in GUI
In GUI, I provided two Splitpanes which host three panels : Buttons Panel, Status Log Panel and Flight Information Panel. Button Panel has four buttons : Search, Clear Log, Exit and Help. Status Log Panel displays the log during user selection and notifies the row updates. Flight Information Panel contains four ComboBoxes for Origin airport, Destination airport, Carrier and Flight number selections. It also displays the query results in customized JTable. I customized the AbstractTableModel to provide a model to represent all the fields of the record. The model is then extended to add "Seats needed" field and "Book" button field. I chose to implement this feature on the same row of the table because it is more intuitive for user to type in a number and click on "Book" button on the same row and see the changes right away. I did not provide Local and Network mode switching and database name in the GUI, instead I did the Local and Network mode selection through the command arguments. If the java.security.policy (required for Network mode because the RMI callback function), -s (DNS name of the server) and -p (Port number used by the server) options are present as the command arguments when the FBN GUI client is invoked, then it is considered as Network mode. Otherwise it is considered as Local mode. No need to prepare for the written exam if you did your design document yourself. I think the reason I lost points in Gerneral Considerations and Server portions probably because I did not provide graceful shutdown facility for the server (even thought I did some project at work that implemented that feature). I realized that after I uploaded my assignment. I guess the points I lost in GUI probably because I did not provide Local and Remote swithing in GUI. I really hope Sun can tell each individual why the points are deducted, so he or she can improve in the future. Good luck.
Yann-Ming Wang IBM Corp.
Test: Sun Certified Developer for the Java 2 Platform (310-027) Date Taken: 2001-07-28 12:10:13.140 Registration Number: g76dtt0599 Site: ga17 Grade: P Score: 146 Comment: This report shows the total points that could have been awarded in each section and the actual number of points you were awarded. This is provided to give you per-section feedback on your strengths. The maximum possible # of points is 155; the minimum to pass is 124. General Considerations(maximum = 58): 55 Documentation(maximum = 20): 20 GUI(maximum = 24): 22 Server(maximum = 53) : 49
Congratulation, Yann-Ming. It's a great score. I would think that no graceful shutdown and no switching between local/remote cannot be the reasons for losing points. They cannot deduce my marks just because I don't provide some nice-to-have features. If they need to see them, they should state it clearly in the brief. That's just what I think.
Congrats Yann!! Great Achievement. I just passed SCJP.Got a fair knowledge of Swing.How to begin studying for SCJD.What benefits does a fresher like me with no job at present derive from it?Is SCWCD better as far as a job is concerned? Regards, Biswas Biswajit SCJP
Kevin - I think you probably are right. I wish they could at least tell me what I did not do what they expected and I can improve in those area. Thanks. Biswas - Sorry, I don't know much about SCWCD. Based on my experience when I did the assignment, I benefit a lot by constantly visiting http://groups.yahoo.com/group/java-dev-test/ and this user group. I also like http://myweb.onramp.net/~huston/dp/patterns.html for design patterns. Sun's Java tutorial site is very helpful also, I learned RMI from there. Hope this helps. Yann-Ming
Hi, Congrats, I have a couple of questions for you. (1) Did u have any lock time out (maximum time that a lock can be held by a client) (2) Say, If I request for lock, I may want to have time out while requesting th elock itself. Di du implement it? (3) How you filled the values for the origin & destination combobox Thanx in adavance, All the Best for SCEAJ, Shankar S
Shankar, I did not implement any lock time out. Howerver, I explained it in the design document that the reason I did not implement that is bacause the requirement does not allow me to specify the lock timeout as a input argument when I start the server and I don't think it is a good idea to have hard-coded timeout value specified in the code. In terms of the original and destination comboboxes, I read in all the records from the database and put them into different vectors (I also added "Any" as one of the selections). Then, I load them into different comboboxes.
Hi, Thanx a lot for your reply. I am facing a problem while testing the server with simulating concurrent clients to generate load in the server. I have no problem, when i tested with 15 concurrent clients. When, increased the numver of clients to 20, I started getting ConnectEception for some clients. Is there any way/restruction for the rmi registry thats it can serve only a specific number of connections. Or, the problem is in the OS level? Did u try testing the server application in this way? Again, Thanx in advance, Shankar S
I also got the same problem when testing my program with 20 and more clients. I still could not find the answer for that. I read somewhere that the maximum threads you can run in some operating systems(I don't remember exactly whether this limitation is in operating system or in RMI)is 26.
ShankarS, I did not test as many client connections as you did. I only tested using up to about 6 clients. So, I don't know the real limitations on the RMI server. I did a search in www.deja.com site, I found one message you might be interested in. It is displayed as follows : ================================================================ From: email@example.com (firstname.lastname@example.org) Subject: Re: RMI Performance Newsgroups: comp.lang.java.programmer, comp.lang.java.help Date: 1999/06/03 I believe there are some cases where the RMI chokes up when pounded by high volume transactions. I am not aware of hard figures, but there are also slow transport issues due to problems with JRMP being used. Maybe RMI/IIOP will be better. As aside, I attended a seminar by Weblogic and they have a RMI of their own which is compliant with Sun's RMI at the API level but not the object level. This implementation they claim is free of problems with Sun's RMI implementation. ================================================================ Yann-Ming
You showed up just in time for the waffles! And this tiny ad:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop