Sanjay Raghavan

Ranch Hand
+ Follow
since May 14, 2002
Merit badge: grant badges
For More
Cows and Likes
Total received
In last 30 days
Total given
Total received
Received in last 30 days
Total given
Given in last 30 days
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by Sanjay Raghavan

While my part-II was already compliant with what SUN thought was best practices, I also flipped through the Bad practices section in the Core J2EE book, and found it helpful for consolidating my thoughts in part III.
The purpose of that question was to introduce the concept of Client/Server systems (in Concepts and Common Architectures) and highlight how they differ from n-tier systems:
Here's the complete question:
Which of the following are true about client/server based applications? Choose 3.
a.Clients are typically used for data presentation, validation and for processing business logic.
b.Most client/server applications follow the Model2 architecture as opposed to n-tier applications that follow Model3.
c.In client/server applications, the client normally consists of the view, controller and parts of the model.
d.In typical client/server applications, the presentation tier (windows) generally talks to controller (a data dispatcher), which then talks to objects that represent the enterprise data.
e.Client/server applications generally have fat clients and sometimes, fat servers as well. Hence both the client and the server could offer portability problems.
Choices A, C and E are correct.
In 2-tier applications, clients are typically used for data presentation, validation of user inputs and processing of business logic. Hence choice A is correct.
If you compare the functions performed by the client with the MVC pattern, the client performs the duties of the view, the controller and parts of the model. The client interacts with the database and retrieves data. This data is then assembled into the required view. For example, a window that shows all orders taken in 1 day sorted by the customer number. The client thus acts as the view in MVC.
When some search criteria is entered and the user presses a button to retrieve necessary data, the client appropriately dispatches the request to the database interaction object that retrieves the necessary data. Here the client acts as the controller.
Most database interaction is encapsulated in a set of database access objects. These objects perform business rules processing. Here the client performs the job of the MVC model. Some logic is also encapsulated on the server side via triggers and stored procedures. Hence it is possible that the database also performs some model tasks in 2-tier applications. Hence choice C is correct.
Client/server applications frequently suffer from fat clients or fat servers or a combination of both. This is because either all the logic is coded in the client (4GL scripting language) or all the logic is coded on the server (through stored procedures and triggers) or a combination of both. This results in poor portability of such applications. Hence choice E is correct.
Choice B indicates that 2-tier applications follow Model2 architecture whereas n-tier applications follow Model3 architecture. This is untrue, because it is n-tier applications that normally follow the Model2 architecture. Hence choice B is incorrect.
Although object oriented client/server platforms may offer the tools to decouple windows and database interaction objects that is not a normal feature in 2-tier applications. Hence choice D is incorrect.
As Chris pointed out, the MVC architecture is commonly refereed to as the Model2 architecture. The notion of Model 3 is given to just throw you off (it is coomon to mistake that 2-tier may follow Model-2 and 3-tier may follow Model-3)
If you still have any questions, I'll be happy to answer them.
Best luck,
Part III is a written exam. You will have a few essay questions, and you will have a basic editor to work with.
If you remember your design completely, it should be like clock work. My only recommendation, review your design before going for the exam.
1. It is certainly not true that changes to one tier will always affect the other.
Explanation from test:
In a two tier system, a change to one tier need not necessarily affect the other tier. For example consider an Order Entry system where the users need to see transaction history for individual customers. A new screen can be developed to take data from the transaction tables and display it on the client. In this example, no changes are required on the server. Consider an alternate example where a stored procedure accessing data spread in multiple tables now queries a materialized view. No changes would be required to clients that call the stored procedure, as long as all input and output remains the same.
2. Also it is a common falacy to think that two tier systems have only one database. You could always have an Order Entry and Management application where OE is one database and OM is another database. While OE needs to be a synchronous process, OM often does not. In such examples, if the OM server comes down, it does not halt the OE system from accepting new orders.
Explanation from test:
Although it may be true in many cases, Client/Server architectures do not always represent single points of failure. With single database servers, of course if the server fails, clients may not be able to connect to the database. However in multi-database applications, if parts of the client or server fail, other parts of the system may still be accessible.
While I cannot answer abt your experience with the SCJP tests, in the example of the design patterns, it was just a disconnect. The
Whizlabs folks constantly look at SCEA_PREP and Javaranch. Your question was brought up, but because it was already answered, they let it go...(don't remember if that was the one abt strategy vs. template method or something else...but I do know that it was brought up).
With regards to the price increase, I have requested the Whizlabs folks to provide more insight...I understand that the % is far from normal, but the dynamics of start-ups can be very different from those of large companies. But anyways, I think someone from Whizlabs will be able to provide more insight on it.
Having had the benefit of working with the folks at Whizlabs, all I can say in their stead is that they genuinely care about their customers...whenever there are questions or doubts, they ping all their resources to get them answered (whether or not they are directly related to the mock exams).
I am not completely aware of the pricing guess would be that they have all along managed to keep prices low (through the peak of recession) and perhaps that is impeding their ability to grow into other arenas where there is a genuine gap (remember guys both venture and angel funding is really touch to come by right now). This might be one way they can mitigate the issue.
In terms of helping the community, I think their upcoming endeavors will definitely help in the IT training and certification areas.
Just to clue you all on an interesting project, I have just put together a team to write something for SCEA-part II and that project is commencing in the next few days. This is one more of Whizlabs' initiative.
So yes, of course it bites when prices go up, but I think in the big picture, the benefits to the community at large will out weigh the inconvenience.
Just my $.02!
Ajith, the moderator, has made several requests that members should not discuss specifics of the assignment. To keep up the quality of the ranch as a "high quality" SCEA preparation site, I think we should respect Ajith's guidelines/rules.
There are a few things that are confusing in the assignment, but what you are asking is not one of them. Please read through it again, and you will find the answer to your question.
Please do not take this personally...I hope you understand that discussing specifics:
1. Is a violation of the contract with SUN
2. Reduces the value of the certification.
As Chris says, its not appropriate to say that you would never use SFSB with DAOs. But as Chris also points out, the author meant that from a best practices point of view, rather than a feasibility point.
Although SUN would vouch for SFSB, I have not seen too many EJB implementations where SFSB are even used. They are expensive to maintain.
Also (according to the best practices) you would use DAOs to retrieve data (and possibly update data that is non-concurrent). Could you use a SFSB to manage the retrieval/update, yes you could. But if your app already has a SFSB for managing state, you will probably leverage it from your Session Managers (Stateless beans that interact with DAOs).
Hope this helps.
In your example the answer would be a factory of singleton pools. Each pool can be represented by a singleton and a reference to the desired pool can be dynamically obtained via the ConnectionPoolFactory
You had sent me a mail with a question on the builder pattern. Because of your privacy settings at the ranch, I am unable to respond to you privately. Further I also figured that this way, others will have an opportunity to participate as well.
The question was to do with an example for the Builder pattern. Builder is a creational GoF pattern. A while back I had posted a detailed description with fast-foods as an example. Please try to read through that. It will give you a clear example of the Builder pattern.
Here's another example. Let us assume that a diagram has to have two objects and some relationship between them.
Given this construct, you can create:
1. Class, Class, Association
2. Interface, Class, Implementation
3. Class, Class, Inheritance and so on.
The idea is that you can only have 2 objects and 1 relationship, but the objects and the relationship can be constructed dynamically Ala Carte.
In general, we use the following three terms:
1. Identification
2. Authentication
3. Authorization.
Identification is when you identify yourself to the server. The most common way this occurs is via a user_id. You identify yourself to the server as Sanjay or Ajith or whoever.
Authentication is the way the server authenticates that it is indeed Sanjay or Ajith. How does this happen? Typically via a password. (There can be other examples - client side SSL authentication e.t.c.) I am just trying to get the idea across.
Once the user has been identified and authenticated, s/he has to have the authorization to perform various tasks. Normally that is done by associating the user to a group/role and assigning previledges to that group/role. Authorization can be different in each tier - e.g. Web Tier authorization (What links are avl to the user), EJB tier (what methods can this user access), EIS Tier (what schemas can this user query...) and so on.
Vibha had posted a question abt this some time back, and I had outlined the process.
Please try to locate that thread.
I co-authored the content. I am not very conversant with the business aspects (discounts e.t.c.) You will have to check with Whizlabs directly.
Normally they are very professional about getting back to people. If you requested for some info and did not receive it yet, please do drop them another mail.
I know of specific instances where people had problems with their HDD and Whizlabs imediately sent them the necessary install/license keys.
There are no specific pre-reqs for the Architect Exam.
I don't think there's any hard and fast rules. I had a detailed approach and a colleague of mine went with an abridged method...we both did well.