510 likes | 754 Views
How can we create deadlock condition on our servlet?. Ans: one simple way to call doPost() method inside doGet() and doGet()method inside doPost() it will create deadlock situation for a servlet. For initializing a servlet can we use constructor in place of init ().
E N D
How can we create deadlock condition on our servlet? • Ans: one simple way to call doPost() method inside doGet() and doGet()method inside doPost() it will create deadlock situation for a servlet.
For initializing a servlet can we use constructor in place of init (). • No, we can not use constructor for initializing a servlet because for initialization we need an object of servletConfig using this object we get all the parameter which are defined in deployment descriptor for initializing a servlet and in servlet class we have only default constructor according to older version of java so if we want to pass a Config object we don’t have parameterized constructor and apart from this servlet is loaded and initialized by container so it is the job of container to call the method according to servlet specification they have lifecycle method so init() method is called firstly.
Suppose you have a class which you serialized it and stored in persistence and later modified that class to add a new field. What will happen if you deserialize the object already serialized? • in this case Java Serialization API will throw java.io.InvalidClassException
Can we transfer a Serialized object vie network? • Yes you can transfer a Serialized object via network because java serialized object remains in form of bytes which can be transmitter via network. You can also store serialized object in Disk or database as Blob.
While serializing you want some of the members not to serialize? How do you achieve it? • It is sometime also asked as what is the use of transient variable,
Can you Customize Serialization process or can you override default Serialization process in Java? • The answer is yes you can. We all know that for serializing an objectObjectOutputStream.writeObject (saveThisobject) is invoked and for reading object ObjectInputStream.readObject() is invoked but there is one more thing which Java Virtual Machine provides you is to define these two method in your class. If you define these two methods in your class then JVM will invoke these two methods instead of applying default serialization mechanism
How can we refresh servlet on client? • On client side we can use Meta http refresh
How many methods Serializable has? If no method then what is the purpose of Serializable interface? • Serializable interface exists in java.io package and forms core of java serialization mechanism. It doesn't have any method and also called Marker Interface in Java. When your class implements java.io.Serializable interface it becomes Serializable in Java and gives compiler an indication that use Java Serialization mechanism to serialize this object.
“Minimize Accessibility of Classes and Members” how to do that? • Standard advice for information hiding/encapsulation • Decouples modules • Allows isolated development and maintenance • Java has an access control mechanism to accomplish this goal • Item 13
Make Each Class or Member as Inaccessible as Possible • Standard list of accessibility levels • private • package-private (aka package friendly) • protected • public • Huge difference between 2nd and 3rd • package-private: part of implementation • protected: part of public API
In Public Classes, Use Accessors, Not Public Fields • Avoid code such as: class Point { public double x; public double y; } • No possibility of encapsulation • Also, public mutable fields are not thread safe • Use get/set methods instead: public double getX() { return x; } public void setX(double x) { this.x = x} • Advice holds for immutable fields as well • Limits possible ways for class to evolve • Item 14:
Example: Questionable Use of Immutable Public Fields public final class Time { private static final int HOURS_PER_DAY = 24; private static final int MINUTES_PER_HOUR = 60; public final int hour; // Not possible to change rep for class public final int minute; // But we can check invariants, since fields are final public Time ( int hour, int minute ) { if (hour < 0 || hour >= HOURS_PER_DAY) throw new IllegalArgumentException(“Hour: “ + hour); if (minute < 0 || minute >= MINUTES_PER_HOUR) throw new IllegalArgumentException(“Minute: “ + minute); this.hour = hour; this.minute = minute; } // Remainder omitted }
Minimize Mutability , why? • Reasons to make a class immutable: • Easier to design • Easier to implement • Easier to use • Less prone to error • More secure • Easier to share • Thread safe • Item 15:
Mutability • Mutable Objects: When you have a reference to an instance of an object, the contents of that instance can be altered • Immutable Objects: When you have a reference to an instance of an object, the contents of that instance cannot be altered
Mutability • Final classes • A final class cannot be subclassed. This is done for reasons of security and efficiency. • Accordingly, many of the Java standard library classes are final, for example java.lang.System and java.lang.String. All methods in a final class are implicitly final. • Example: • publicfinalclass MyFinalClass {...} • publicclass ThisIsWrong extends MyFinalClass {...} // forbidden • Restricted subclasses are often referred to as "soft final" classes.
Mutability • Final methods • A final method cannot be overridden by subclasses. • This is used to prevent unexpected behavior from a subclass altering a method that may be crucial to the function or consistency of the class. • Example: • publicclassMyClass { publicvoidmyMethod() {...} publicfinalvoidmyFinalMethod() {...} } • publicclassAnotherClassextendsMyClass { publicvoidmyMethod() {...} // Ok publicfinalvoidmyFinalMethod() {...} // forbidden }
Mutability • Final variables • A final variable can only be initialized once, either via an initializer or an assignment statement. • It does not need to be initialized at the point of declaration: this is called a "blank final" variable. • A blank final instance variable of a class must be definitely assigned at the end of every constructor of the class in which it is declared;
Example: Class Complex public final class Complex { private final double re; private final double im; public Complex (double re, double im) { this.re = re; this.im = im;} // Accessors with no corresponding mutators public double realPart() { return re; } public double imaginaryPart() { return im; } // Note standard “producer” pattern public Complex add (Complex c) { return new Complex (re + c.re, im + c.im); } // similar producers for subtract, multiply, divide // implementations of equals() and hashCode() use Double class }
Inheritance is Forever • A commitment to allow inheritance is part of public API • If you provide a poor interface, you (and all of the subclasses) are stuck with it. • You cannot change the interface in subsequent releases. • TEST for inheritance • How? By writing subclasses
Constructors Must Not Invoke Overridable Methods // Problem – constructor invokes overridden m() public class Super { public Super() { m();} public void m() {…}; } public class Sub extends Super { private final Date date; public Sub() {date = new Date();} public void m() { // access date variable} }
What Is the Problem? • Consider the code Sub s = new Sub(); • The first thing that happens in Sub() constructor is a call to constructor in Super() • The call to m() in Super() is overridden • But date variable is not yet initialized! • Further, initialization in Super m() never happens! • Yuk!
What are the common mechanisms used for session tracking? • CookiesSSL sessionsURL- rewriting
What is the difference between Difference between doGet() and doPost()?
What is Session Bean? • A session bean is a non-persistent object that implements some business logic running on the server. One way to think of a session object is as a logical extension of the client program that runs on the server.Session beans are used to manage the interactions of entity and other session beans, access resources, and generally perform tasks on behalf of the client.
What is software architecture of EJB? • session and Entity EJBs consist of 4 and 5 parts respectively:1. A remote interface (a client interacts with it), 2. A home interface (used for creating objects and for declaring business methods),3. A bean object (an object, which actually performs business logic and EJB-specific operations). 4. A deployment descriptor (an XML file containing all information required for maintaining the EJB) or a set of deployment descriptors (if you are using some container-specific features). 5.A Primary Key class - is only Entity bean specific.
What is the role of Remote Interface in RMI? • Remote interfaces are defined by extending ,an interface called Remote provided in the java.rmi package. The methods must throw RemoteException. But application specific exceptions may also be thrown.
An applet may not create frames (instances of java.awt.Frame class).• True • False • FalseWhile applets must themselves reside within the browser, they may create other frames.
An applet is an instance of the Panel class in package jawa.awt.• True• False • TrueApplets are small programs, meant not to run on their own but be embedded inside other applications (such as a web browser). All applets are derived from the class java.applet.Applet, which in turn is derived from java.awt.Panel.
The class file of an applet specified using the CODE parameter in an <APPLET> tag must reside in the same directory as the calling HTML page.• True • False • FalseThe CODE parameter can specify complete or relative path of the location of the class file
Applets loaded over the internet have unrestricted access to the system resources of the computer where they are being executed.• True • False • FalseDue to security reasons, applets run under a restricted environment and cannot perform many operations, such as reading or writing to files on the computer where they are being executed.
An applet may be able to access some methods of another applet running on the same page.• True• False • TrueOnly public methods can be accessed in such a fashion.
If getParameter method of an instance of java.applet.Applet class returns null, then an exception of type a NullPointerException is thrown.• True • False • FalseA NullPointerException is thrown only when a null value is used in a case where an object is required. For instance, trying to execute the equals method on a String object when the object is null.
One of the popular uses of applets involves making connections to the host they came from.• True• False • TrueAn example of this feature can be implementation of a chat functionality.
Applets loaded from the same computer where they are executing have the same restrictions as applets loaded from the network.• True • False • FalseApplets loaded and executing locally have none of the restrictions faced by applets that get loaded from the network.
The methods init, start, stop and destroy are the four major events in the life of an applet.• True• False • TrueThese methods initialize, start the execution, stop the execution, and perform the final cleanup respectively. Not each of these methods may be overridden in every applet.
Applets are not allowed to have contsructors due to security reasons.• True • False • FalseApplets may have constructors, but usually don't as they are not guaranteed to have access to the environment until their init method has been called by the environment.
Exam • Multiple choice and true/false questions cover: • Basics of the language • Topics that we studied • Effective Java Items • There will be a cover page to record your choice; please use it since I will not look at the internal pages