1 / 77

Lecture 6

Lecture 6. Advanced programming . 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.

lorna
Download Presentation

Lecture 6

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lecture 6 Advanced programming

  2. 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.

  3. 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 servletConfigusing 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.

  4. 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

  5. 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.

  6. 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, 

  7. 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

  8. How can we refresh servlet on client? • On client side we can use Meta http refresh <meta http-equiv="refresh" content= "0;URL='http://thetudors.example.com/'" />

  9. 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.

  10. “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

  11. 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

  12. 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:

  13. 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

  14. 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: • publicfinalclassMyFinalClass {...} • publicclassThisIsWrongextendsMyFinalClass {...} // forbidden • Restricted subclasses are often referred to as "soft final" classes.

  15. 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 }

  16. 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; 

  17. 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 }

  18. 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:

  19. 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 }

  20. 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

  21. 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} }

  22. 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!

  23. What are the common mechanisms used for session tracking? • CookiesSSL sessionsURL- rewriting -  …/about-this-website-and-me/

  24. What is the difference between doGet() and doPost()?

  25. 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.

  26. 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.

  27. An applet is an instance of the Panel class in package java.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.

  28. 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

  29. 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.

  30. 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.

  31. 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.

  32. 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.

  33. 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.

  34. 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.

  35. 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 initmethod has been called by the environment.

  36. What is the difference between a JDK and a JVM? • JDK is Java Development Kit which is for development purpose and it includes execution environment also. • But JVM is purely a run time environment and hence you will not be able to compile your source files using a JVM.

  37. What is the base class of all classes? • java.lang.Object

  38. Is Java a pure object oriented language? • Java uses primitive data types and hence is not a pure object oriented language.

More Related