Complete Java J2EE
Complete Java J2EE
Complete Java J2EE
----
?Abstraction:Showing the essential and hiding the non-Essential is known as Abst
raction. ?Encapsulation: The Wrapping up of data and functions into a single uni
t is known as Encapsulation. Encapsulation is the term given to the process of h
iding the implementation details of the object. Once an object is encapsulated,
its implementation details are not immediately accessible any more. Instead they
are packaged and are only indirectly accessed via the interface of the object.
?Inheritance: is the Process by which theObj of one class acquires the propertie
s ofObj s another Class. A reference variable of a Super Class can be assign to an
y Sub class derived from the Super class. Inheritance is the method of creating
the new class based on already existing class , the new class derived is called
Sub class which has all the features of existing class and its own, i.e sub clas
s. Adv: Reusability of code , accessibility of variables and methods of the Base
class by the Derived class. ?Polymorphism: The ability to take more that one fo
rm, it supports Method Overloading & Method Overriding. ?Method overloading: Whe
n a method in a class having the same method name withd ifferent arguments (diff
Parameters or Signatures) is said to be Method Overloading. This is Compile tim
ePolymorphis m. Using one identifier to refer to multiple items in the same scop
e. ?Method Overriding: When a method in a Class having same method name withsame
arguments is said to be Method overriding. This is Run timePolymorphis m. Provi
ding a different implementation of a method in a subclass of the class that orig
inally defined the method. 1. In Over loading there is a relationship between th
e methods available in the same class ,where as in Over riding there is relation
ship between the Super class method and Sub class method.
2.Overloadi ng does not block the Inheritance from the Super class , Where as in
Overriding blocks Inheritance from the Super Class. 3. InOverloadi ng separate
methods share the same name, where as inOverrid ing Sub class method replaces th
e Super Class. 4.Overloadingmust have different method Signatures , Where as Ove
rridingmethods must have same Signatures. Dynamic dispatch: is a mechanism by wh
ich a call to Overridden function is resolved at runtime rather than at Compile
time , and this is how Java implements Run time Polymorphism. ?Dynamic Binding:
Means the code associated with the given procedure call is not known until the t
ime of call the call at run time. (it is associated with Inheritance & Polymorph
ism). ?Bite code: Is a optimized set of instructions designed to be executed by
Java-run time system, which is called the Java Virtual machine (JVM), i.e. in it
s standard form, the JVM is an Interpreter for byte code. JIT- is a compiler for
Byte code, The JIT-Complier is part of theJ VM, it complies byte code into exec
utable code in real time, piece-by-piece on demand basis. [email protected]
1
Final classes : String, Integer , Color, Math Abstract class : Generic servlet,
Number class ovariable:An item of data named by an identifier.Each variable has
a type,such as int or Object,and a scope oclass variable :A data item associate
d with a particular class as a whole--not with particular instances of the class
. Class variables are defined in class definitions. Also called a static field.
See also instance variable. oinstance variable :Any item of data that is associa
ted with a particular object. Each instance of a class has its own copy of the i
nstance variables defined in the class. Also called afiel d. See also class vari
able. olocal variable :A data item known within a block, but inaccessible to cod
e outside the block. For example, any variable defined within a method is a loca
l variable and can't be used outside the method. oclass method :A method that is
invoked without reference to a particular object. Class methods affect the clas
s as a whole, not a particular instance of the class. Also called asta tic metho
d. also instance method. oinstance method :Any method that is invoked with respe
ct to an instance of a class. Also called simply amethod. See also class method.
? Interface : Interfaces can be used to implement the Inheritance relationship
between the non- related classes that do not belongs to the same hierarchy, i.e.
any Class and any where in hierarchy. Using Interface, you can specify what a c
lass must do but not how it does. A class can implement more than one Interface.
?An Interface can extend one or more interfaces, by using the keywordextends. A
ll the data members in the interface are public, static and Final by default.
An Interface method can have only Public, default and Abstract modifiers.
An Interface is loaded in memory only when it is needed for the first time.
A Class, which implements an Interface, needs to provide the implementation of a
ll the methods in that Interface. ?If the Implementation for all the methods dec
lared in the Interface are not provided , the class itself has to declareabs tra
ct, other wise the Class will not compile. ?If a class Implements twoin terface
and both theIntfs have identical methoddeclarat ion, it is totally valid. ?If a
class implements two interfaces both have identical method name and argument lis
t, but different return types, the code will not compile. ?An Interface can t be i
nstantiated.In tf Are designed to support dynamic method resolution at run time.
An interface can not be native, static, synchronize, final, protected or privat
e. ?The Interfacefiel ds can t be Private or Protected. A Transient variables and
Volatile variables can not be members of Interface. The extends keyword should n
ot used after the Implements keyword, the Extends must always come before the Im
plements keyword. A top level Interface can not be declared as static or final.
If an Interface species an exception list for a method, then the class implement
ing the interface need not declare the method with the exception list. If an Int
erface can t specify an exception list for a method, the class can t throw an except
ion. ?If an Interface does not specify the exception list for a method, the clas
s can not throw any exception list. The general form of Interface is Access inte
rface name { return-type method-name1(parameter-list); type final-varname1=value
; } ----------------------- [email protected] 2
Marker Interfaces :Serializable, Clonable, Remote, EventListener, Java.lang is
the Package of all classes and is automatically imported into all Java Program I
nterfaces:Clonable , Comparable, Runnable ?Abstract Class: Abstract classes can
be used to implement the inheritance relationship between the classes that belon
gssame hierarchy. Classes and methods can be declared as abstract. ?Abstract cla
ss can extend only one Class.
?If a Class is declared as abstract , noin stance of that class can be created.
?If a method is declared as abstract, the sub class gives thei mplementation of
that class.
Even if a single method is declared as abstract in a Class , the class itself ca
n be declared as abstract. ?Abstract class have at leastone abstract method and
others may be concrete.
?In abstract Class the keyword abstract must be used for method.
?Abstract classes havesub classes.
?Combination of modifiers Final and Abstract is illegal in java.
?Abstract Class means - Which has more than one abstract method which doesn t have
method body but at least one of its methods need to be implemented in derived C
lass. The general form of abstract class is : abstract type name (parameter list
); The Number class in the java.lang package represents the abstract concept of
numbers. It makes sense to model numbers in a program, but it doesn't make sense
to create a generic number object.
Difference Between Interfaces And Abstract class ? All the methods declared in t
he Interface are Abstract, where as abstract class must have atleast one abstrac
t method and others may be concrete. In abstract class keyword abstract must be
used for method, where as in Interface we need not use the keyword for methods.
Abstract class must have Sub class, where as Interface can t have sub classes.
An abstract class can extend only one class, where as an Interface can extend mo
re than one.
What are access specifiers and access modifiers ? Accesss specifiers Access modi
fiers Public Public Protected Abstract Private Final
Static
Volatile
Constant
Synchronized
Transient
Native
Public : The Variables and methods can be access any where and any package.
Protected : The Variables and methods can be access same Class, same Package & su
b class.
Private : The variable and methods can be access in same class only.
Same class - Public, Protected, andPriva te Same-package & subclass - Public, Pr
otected Same Package & non-sub classes - Public, Protected Different package & S
ub classes - Public, Protected [email protected] 3
Different package & non- sub classes - Public Identifiers : are the Variables t
hat are declared under particular Datatype. Literals: are the values assigned to
the Identifiers. ?Static : access modifier. Signa: Variable-Static int b;Method
- static void meth(int x) When a member is declared as Static, it can be accesse
d before any objects of its class are created and without reference to any objec
t. Eg : main(),it must call before any object exit. ?Static can be applied to In
ner classes, Variables and Methods. Local variables can t be declared as static. ?
A static method can access only static Variables. and they can t refer tothis orsu
per in any way. Static methods can t be abstract.
A static method may be called without creating any instance of the class.
Only one instance of static variable will exit any amount of class instances.
?Final : access modifier All the Variables, methods and classes can be declared
as Final.
Classes declared as final class can t be sub classed.
Method s declared as final can t be over ridden.
If a Variable is declared as final, the value contained in the Variable can t be c
hanged.
Static final variable must be assigned in to a value in static initialized block
.
? Transient : access modifier ?Transient can be applied only to class level vari
ables. Local variables can t be declared as transient. ?During serialization, Obje
ct s transient variables are not serialized. Transient variables may not be final
or static. But the complies allows the declaration and no compile time error is
generated. ? Volatile : access modifier ?Volatile applies to onlyvariables. Vola
tile can applied to static variables. Volatile can not be applied to final varia
bles. ?Transientand volatile can not come together. ?Volatile is used inmulti-pr
ocessor environments. ? Native : access modifier ?Native applies to only tometho
ds. Native can be applied to static methods also.
Native methods can not be abstract.
Native methods can throw exceptions.
Native method is like an abstract method. The implementation of the abstract cla
ss and native method exist some where else, other than the class in which the me
thod is declared. ? Synchronized : access modifier ?Synchronized keyword can be
applied tomethods orparts of the methods only. Synchronize keyword is used to co
ntrol the access to critical code in multi-threaded programming. Declaration of
access specifier and access modifiers : Class - Public, Abstract, Final venkicse
[email protected] 4
Inner Class - Public, Protected, Private, Final, Static, Anonymous - Public, Pr
otected, Private, Static Variable - Public, Protected, Private, Final, Static, T
ransient, Volatile, Native Method - Public, Protected, Private, Final, Abstract,
Static, Native, Synchronized Constructor - Public, Protected, Private Free-floa
ting code block - Static, Synchronized ? Package : APackage is a collection of C
lasses Interfaces that provides a high-level layer of access protection and name
space management. ?Finalize( )method: All the objects have Finalize() method, t
his method is inherited from the Object class. Finalize() is used to release the
system resources other than memory(such as file handles& network connec s.
Finalize( ) is used just before an object is destroyed and can be called prior t
o garbage collection.
Finalize() is called only once for an Object. If any exception is thrown in the
finalize() the object is
still eligible for garbage collection.
Finalize() can be called explicitly. And can be overloaded, but only original me
thod will be called by Ga-collect. Finalize( ) may only be invoked once by the G
arbage Collector when the Object is unreachable. ?The signature finalize( ) :pro
tected void finalize() throws Throwable { } ?Constructor( ) : A constructor meth
od is special kind of method that determines how an object is initialized when c
reated.
Constructor has the same name as class name.
Constructor does not have return type.
Constructor cannot be over ridden and can be over loaded.
Default constructor is automatically generated by compiler if class does not hav
e once.
If explicit constructor is there in the class the default constructor is not gen
erated.
If a sub class has a default constructor and super class has explicit constructo
r the code will not compile. ?Object : Object is a Super class for all the class
es. The methods in Object class as follows. Object clone( ) final void notify( )
Int hashCode( ) Boolean equals( ) final void notifyAll( ) Void finalize( ) Stri
ng toString( ) Final Class getClass( ) final void wait( ) ? Class : The Class cl
ass is used to represent the classes and interfaces that are loaded by the JAVA
Program. ?Character : A class whose instances can hold a single character value.
This class also defines handy methods that can manipulate or inspect single-cha
racter data. constructors and methods provided by the Character class: Character
(char) : The Character class's only constructor, which creates a Character objec
t containing the value provided by the argument. Once a Character object has bee
n created, the value it contains cannot be changed. compareTo(Character) :An ins
tance method that compares the values held by two character objects. equals(Obje
ct) : An instance method that compares the value held by the current object with
the value held by another. toString() : An instance method that converts the ob
ject to a string. charValue() :An instance method that returns the value held by
the character object as a primitive char value. isUpperCase(char) : A class met
hod that determines whether a primitive char value is uppercase. venkicse527@gma
il.com 5
?String : String isImmutable and String Is a final class. The String class prov
ides for strings whose value will not change. One accessor method that you can u
se with both strings and string buffers is the length() method, which returns th
e number of characters contained in the string or the string buffer.
The methods in String Class:- toString( ) equals( ) indexOff( ) LowerCase( ) cha
rAt( ) compareTo( ) lastIndexOff( ) UpperCase( ) getChars( ) subString( ) trim(
) getBytes( ) concat( ) valueOf( ) toCharArray( ) replace( ) ValueOf( ) : conver
ts data from its internal formate into human readable formate. ?String Buffer :
IsMu table , The StringBuffer class provides for strings that will be modified;
you use string buffers when you know that the value of the character data will c
hange. In addition to length, the StringBuffer class has a method calledcapaci t
y, which returns
the amount of space allocated for the string buffer rather than the amount of sp
ace used.
The methods in StringBuffer Class:-
length( )
append( ) replace( ) charAt( ) and setCharAt( ) capacity( ) insert( ) substring(
) getChars( ) ensureCapacity( ) reverse( ) setLength( ) delete( ) ?Wraper Class
es : are the classes that allow primitive types to be accessed as Objects. These
classes are similar to primitive data types but starting with capital letter. N
umber Byte Boolean Double Short Character Float Integer Long primitive Datatypes
in Java : According to Java in a Nutshell, 5th ed boolean, byte, char, short, l
ong float, double, int. Float class : The Float and Double provides the methods
isInfinite( ) and isNaN( ). isInfinite( ) : returns true if the value being test
ed is infinetly large or small. isNaN( ) : returns true if the value being teste
d is not a number. ? Character class : defines forDigit( ) digit( ) . ForDigit(
) : returns the digit character associated with the value of num. digit( ) : ret
urns the integer value associated with the specified character (which is presuma
bly) according to the specified radix. ?String Tokenizer : provide parsing proce
ss in which it identifies the delimiters provided by the user, by default delimi
ters are spaces, tab, new line etc., and separates them from the tokens. Tokens
are those which are separated by delimiters. ?Observable Class : Objects that su
bclass the Observable class maintain a list of observers. When an Observable obj
ect is updated it invokes the update( ) method of each of its observers to notif
y the observers that it has changed state. ?Observer interface : is implemented
by objects that observe Observable objects. ?Instanceof( ) :is used to check to
see if an object can be cast into a specified type with out throwing a cast clas
s exception. ?IsInstanceof( ) : determines if the specified Object is assignment
-compatible with the object represented by this class. This method is dynamic eq
uivalent of the Java language instanceof operator. The method returns true if th
e specified Object argument is non-null and can be cast to [email protected]
6
the reference type represented by this Class object without raising a ClassCast
Exception. It returns false otherwise. ?Garbage Collection : When an object is n
o longer referred to by any variable, java automatically reclaims memory used by
that object. This is known as garbage collection. System.gc() method may be use
d to call it explicitly and does not force the garbage collection but only sugge
sts that the JVM may make an effort to do the Garbage Collection.
this() : can be used to invoke a constructor of the same class. super():can be u
sed to invoke a super class constructor. ? Inner class : classes defined in othe
r classes, including those defined in methods are called inner classes. An inner
class can have any accessibility including private. ? Anonymous class : Anonymo
us class is a class defined inside a method without a name and is instantiated a
nd declared in the same place and cannot have explicit constructors. What is ref
lection API? How are they implemented Reflection package is used mainlyfor the p
urpose of getting the class name. by using the getName method we can get name of
the class for particular application. Reflection is a feature of the Java progr
amming language. It allows an executing Java program to examine or "introspect"
upon itself, and manipulate internal properties of the program.
What is heap in Java JAVA is fully Object oriented language. It has two phases f
irst one is Compilation phase and second one is interpratation phase. The Compil
ation phase convert the java file to class file (byte code is only readable form
at of JVM) than Intepratation phase interorate the class file line by line and g
ive the proper result.
main( ) : is the method where Java application Begins.
String args[ ] : receives any command line argument during runtime.
System : is a predefined Class that provides access to the System.
Out : is output stream connected to console.
Println :displays the output.
Downcasting :is the casting from a general to a more specific type, i.e casting
down the hierarchy. Doing a cast from a base class to more specific Class, the c
ast does;t convert the Object, just asserts it actually is a more specific exten
ded Object. Upcasting : byte can take Integer values. [email protected] 7
A Hash Table stores information by using a mechanism called hashing. In hashing
the informational content of a key is used to determine a unique value, called
its Hash Code. The Hash Code is then used as the index at which the data associa
ted with the key is stored. The Transformation of the key into its Hash Code is
performed automatically- we never see the Hash Code. Also the code can t directly
index into h c.
Tree Map : Implements Sorted Set Interface. TreeMap tm=new TreeMap( ); The eleme
nts are stored in sorted ascending order. tm.put( Prasad ,new Double(74.6)); Using
key value we can retrieve the data. Provides an efficient means of storing key/v
alue pairs in sorted order and allows rapid retrivals. Iterator: Each of collect
ion class provided an iterator( ). By using this iterator Object, we can access
each element in the collection one at a time. We can remove() ; Hashnext( ) go n
ext; if it returns false end of list. Iterarator Enumerator Iterator itr = a1.ite
rator( ); Enumerator vEnum = v.element( ); While(itr.hashNext( )) System.out.pri
ntln( Elements in Vector : ); { while(vEnum.hasMoreElements( ) ) Object element = it
r.next( ); System.out.println(vEnum.nextElement( ) + ); System.out.println(elemen
t + ); } Collections 1.Introduction 2.Legacy Collections
1. The Enumeration Interface
2. Vector
3. Stack
4. Hashtable
5. Properties
3.Java 2 Collections
1. The Interfaces of the collections framework
2. Classes in the collections framework
3. ArrayList & HashSet
4. TreeSet & Maps
Introduction : Does your class need a way to easily search through thousands of i
tems quickly?
Does it need an ordered sequence of elements and the ability to rapidly insert a
nd remove
elements in the middle of the sequence? Does it need an array like structure with
random-
access ability that can grow at runtime?
List Map | | Abstract List Dictonary | | Vector HashTable | | Stack Properities
The Enumeration Interface : enumerate (obtain one at a time) the elements in a co
llection of objects. specifies two methods : boolean hasMoreElements() :Returns
true when there are still more elements to extract, and false when all of the el
ements have been enumerated. [email protected] 15
Object nextElement() :Returns the next object in the enumeration as a generic O
bject reference. VECTOR : ?Vector implementsdynamic array. Vector v = new vector
( ); ?Vector is agrowable object. V1.addElement(new Integer(1)); ?Vector isSynch
ronized, it can t allow specialcharacters and null values. Vector is a variable-le
ngth array of object references.
Vectors are created with an initial size.
When this size is exceeded, the vector is automatically enlarged.
When objects are removed, the vector may be shrunk.
Constructors :Vector() : Default constructor with initial size 10. Vector(int si
ze) :Vector whose initial capacity is specified by size. Vector(int size,int inc
r) :Vector whose initialize capacity is specified by size and whose increment is
specified by incr. Methods : final void addElement(Object element) : The object
specified by element is added to the vector. final Object elementAt(int index)
: Returns the element at the location specified by index. final boolean removeEl
ement(Object element) : Removes element from the vector
final boolean isEmpty() :Returns true if the vector is empty, false otherwise.
final int size() : Returns the number of elements currently in the vector.
final boolean contains(Object element) : Returns true if element is contained by
the vector and false if it is not. STACK : Stack is a subclass of Vector that im
plements a standard last-in, first-out stack Constructor :Stack() Creates an emp
ty stack. Methods : Object push(Object item) : Pushes an item onto the top of th
is stack. Object pop() : Removes the object at the top of this stack and returns
that object as the value of this function. An EmptyStackException is thrown if
it is called on empty stack. boolean empty() : Tests if this stack is empty. Obj
ect peek() : Looks at the object at the top of this stack without removing it fr
om the stack. int search(Object o): Determine if an object exists on the stack a
nd returns the number of pops that would be required to bring it to the top of t
he stack. HashTable : Hash Table issynchronized and doesnot permitnu ll values.
Hash Table isSeria lized. Hashtable ht = new Hashtable( ); Stores key/value pair
s in Hash Table. ht.put( Prasadi ,new Double(74.6));
Hashtable is a concrete implementation of a Dictionary.
Dictionary is an abstract class that represents a key/value storage repository.
A Hashtable instance can be used store arbitrary objects which are indexed by an
y other arbitrary object. A Hashtable stores information using a mechanism calle
d hashing. When using a Hashtable, you specify an object that is used as a key a
nd the value (data) that you want linked to that key. Constructors : Hashtable()
Hashtable(int size) [email protected] 16
Methods : Object put(Object key,Object value) : Inserts a key and a value into
the hashtable. Object get(Object key) : Returns the object that contains the val
ue associated with key. boolean contains(Object value) : Returns true if the giv
en value is available in the hashtable. If not, returns false. boolean containsK
ey(Object key) : Returns true if the given key is available in the hashtable. If
not, returns false. Enumeration elements() : Returns an enumeration of the valu
es contained in the hashtable. int size() : Returns the number of entries in the
hashtable. Properties Properties is a subclass of Hashtable
Used to maintain lists of values in which the key is a String and the value is a
lso a String
Constructors
Properties() Properties(Properties propDefault) : Creates an object that uses pr
opDefault for its default value. Methods : String getProperty(String key) : Retu
rns the value associated with key. Strng getProperty(String key, String defaultP
roperty) : Returns the value associated with key. defaultProperty is returned if
key is neither in the list nor in the default property list . Enumeration prope
rtyNames() : Returns an enumeration of the keys. This includes those keys found
in the default property list. The Interfaces in Collections Framework Collection
Map Iterator Set List SortedMap ListIterator | SortedSet Collection : A collect
ion allows a group of objects to be treated as a single unit. The Java collectio
ns library forms a framework for collection classes. The CI is the root of colle
ction hierarchy and is used for common functionality across all collections.
There is no direct implementation of Collection Interface.
Two fundamental interfaces for containers:
Collection boolean add(Object element) : Inserts element into a collection Set I
nterface: extendsCol lection Interface. The Class Hash set implements Set Interf
ace. ?Is used to represent the group ofunique elements. [email protected] 17
?Set stores elements in an unordered way but doesnot contain duplicate elements
. identical to Collection interface, but doesn t accept duplicates. Sorted set : e
xtendsSet Interface. The class Tree Set implements Sorted set Interface. It prov
ides the extra functionality of keeping the elements sorted. ?It represents the
collection consisting ofUn ique, sorted elements in ascending order. expose the
comparison object for sorting. List Interface: ordered collection Elements are a
dded into a particular position.
Represents the sequence of numbers in a fixed order.
But may contain duplicate elements.
Elements can be inserted or retrieved by their position in the List using Zero b
ased index.
List stores elements in an ordered way.
Map Interface: Basic Interface.The classes Hash Map & HashTable implements Map i
nterface.
Used to represent the mapping of unique keys to values.
By using the key value we can retrive the values.
Two basic operations are get( ) & put( ) .
boolean put(Object key, Object value) :Inserts given value into map with key Obj
ect get(Object key) :Reads value for the given key. Tree Map Class: Implements S
orted Set Interface. The elements are stored in sorted ascending order. Using ke
y value we can retrieve the data. ?Provides an efficient means of storing key/va
lue pairs in sorted order and allowsrapid retrivals. TreeMap tm=new TreeMap( );
tm.put( Prasad ,new Double(74.6)); TheClass es in Collections Framework Abstract Co
llection Abstract List Abstract Set Abstract Map Abstract Array List Hash Set Tr
ee Set Hash Map Tree Map Sequential List Linked List ArrayList Similar to Vector
: it encapsulates a dynamically reallocated Object[] array Why use an ArrayList
instead of a Vector? All methods of the Vector class are synchronized, It is saf
e to access a Vector object from two threads.
ArrayList methods are not synchronized, use ArrayList in case of no synchronizat
ion
Useget andset methods instead ofelementA t andsetE lementAt methods of vector
[email protected] 18
HashSet Implements a set based on a hashtable The default constructor constructs
a hashtable with 101 buckets and a load factor of 0.75 HashSet(int initialCapac
ity) HashSet(int initialCapacity,float loadFactor) loadFactor is a measure of ho
w full the hashtable is allowed to get before its capacity is automatically incr
eased Use Hashset if you don t care about the ordering of the elements in the coll
ection TreeSet Similar to hash set, with one added improvement A tree set is a s
orted collection Insert elements into the collection in any order, when it is it
erated, the values are automatically presented in sorted order Maps : Two implem
entations for maps: HashMap hashes the keys
The Elements may not in Order.
Hash Map is not synchronized and permits null values
Hash Map is not serialized.
?Hash Map supportsIterators. TreeMap uses a total ordering on the keys to organi
ze them in a search tree
The hash or comparison function is applied only to the keys
The values associated with the keys are not hashed or compared.
How are memory leaks possible in Java If any object variable is still pointing t
o some object which is of no use, then JVM will not garbage collect that object
and object will remain in memory creating memory leak What are the differences b
etween EJB and Java beans the main difference is Ejb componenets are distributed
which means develop once and run anywhere. java beans are not distributed. whic
h means the beans cannot be shared . What would happen if you say this = null th
is will give a compilation error as follows cannot assign value to final variabl
e this Will there be a performance penalty if you make a method synchronized? If
so, can you make any design changes to improve the performance yes.the performa
nce will be down if we use synchronization. one can minimize the penalty by incl
uding garbage collection algorithm, which reduces the cost of collecting large n
umbers of short- lived objects. and also by using Improved thread synchronizatio
n for invoking the synchronized methods.the invoking will be faster.
How would you implement a thread pool public class ThreadPool extends java.lang.
Object implements ThreadPoolInt [email protected] 19
This class is an generic implementation of a thread pool, which takes the follow
ing input
a) Size of the pool to be constructed
b) Name of the class which implements Runnable (which has a visible default cons
tructor)
and constructs a thread pool with active threads that are waiting for activation
. once the threads have finished processing they come back and wait once again i
n the pool. This thread pool engine can be locked i.e. if some internal operatio
n is performed on the pool then it is preferable that the thread engine be locke
d. Locking ensures that no new threads are issued by the engine. However, the cu
rrently executing threads are allowed to continue till they come back to the pas
sivePool
How does serialization work Its like FIFO method (first in first out) How does g
arbage collection work There are several basic strategies for garbage collection
: reference counting, mark- sweep, mark-compact, and copying. In addition, some
algorithms can do their job incrementally (the entire heap need not be collected
at once, resulting in shorter collection pauses), and some can run while the us
er program runs (concurrent collectors). Others must perform an entire collectio
n at once while the user program is suspended (so-called stop-the-world collecto
rs). Finally, there are hybrid collectors, such as the generational collector em
ployed by the 1.2 and later JDKs, which use different collection algorithms on d
ifferent areas of the heap
How would you pass a java integer by reference to another function Passing by re
ference is impossible in JAVA but Java support the object reference so. Object i
s the only way to pass the integer by refrence. What is the sweep and paint algo
rithm The painting algorithm takes as input a source image and a list of brush s
izes. sweep algo is that it computes the arrangement of n lines in the plane ...
a correct algorithm, Can a method be static and synchronized no a static mettod
can't be synchronized Do multiple inheritance in Java Its not possible directly
. That means this feature is not provided by Java, but it can be achieved with t
he help of Interface. By implementing more than one interface. What is data enca
psulation? What does it buy you The most common example I can think of is a java
bean. Encapsulation may be used by creating 'get' and 'set' methods in a class w
hich are used to access the fields of the object. Typically the fields are made
private while the get and set methods are public.
dEncapsulation can be used to validate the data that is to be stored, to do calc
ulations on data that is stored in a field or fields, or for use in introspectio
n (often the case when using javabeans in Struts, for instance).
What is reflection API? How are they implemented Reflection package is used main
lyfor the purpose of getting the class name. by using the getName method we can
get name of the class for particular application . Reflection is a feature of th
e Java programming language. It allows an executing Java program to examine or "
introspect" upon itself, and manipulate internal properties of the program.
What are the primitive types in Java According to Java in a Nutshell, 5th ed boo
lean, byte, char, short, long float, double, int Is there a separate stack for e
ach thread in Java No What is heap in Java [email protected] 20
oWhen the RowSet object changes one of its rows, changes all of it rows, or move
s its cursor, it also notifies each listener that is registered with it. The lis
tener reacts by carrying out its implementation of the notification method calle
d on it. oRowSetEvent As part of its internal notification process, a RowSet obj
ect creates an instance of RowSetEvent and passes it to the listener. The listen
er can use this RowSetEvent object to find out which rowset had the event.
2. Metadata RowSetMetaData This interface, derived from the ResultSetMetaData in
terface, provides information about the columns in a RowSet object. An applicati
on can use RowSetMetaData methods to find out how many columns the rowset contai
ns and what kind of data each column can contain. The RowSetMetaData interface p
rovides methods for setting the information about columns, but an application wo
uld not normally use these methods. When an application calls the RowSet method
execute, the RowSet object will contain a new set of rows, and its RowSetMetaDat
a object will have been internally updated to contain information about the new
columns.
3. The Reader/Writer Facility A RowSet object that implements the RowSetInternal
interface can call on the RowSetReader object associated with it to populate it
self with data. It can also call on the RowSetWriter object associated with it t
o write any changes to its rows back to the data source from which it originally
got the rows. A rowset that remains connected to its data source does not need
to use a reader and writer because it can simply operate on the data source dire
ctly.
RowSetInternal By implementing the RowSetInternal interface, a RowSet object get
s access to its internal state and is able to call on its reader and writer. A r
owset keeps track of the values in its current rows and of the values that immed
iately preceded the current ones, referred to as theorigina l values. A rowset a
lso keeps track of (1) the parameters that have been set for its command and (2)
the connection that was passed to it, if any. A rowset uses the RowSetInternal
methods behind the scenes to get access to this information. An application does
not normally invoke these methods directly.
RowSetReader A disconnected RowSet object that has implemented the RowSetInterna
l interface can call on its reader (the RowSetReader object associated with it)
to populate it with data. When an application calls the RowSet.execute method, t
hat method calls on the rowset's reader to do much of the work. Implementations
can vary widely, but generally a reader makes a connection to the data source, r
eads data from the data source and populates the rowset with it, and closes the
connection. A reader may also update the RowSetMetaData object for its rowset. T
he rowset's internal state is also updated, either by the reader or directly by
the method RowSet.execute.
RowSetWriter A disconnected RowSet object that has implemented the RowSetInterna
l interface can call on its writer (the RowSetWriter object associated with it)
to write changes back to the underlying data source. Implementations may vary wi
dely, but generally, a writer will do the following:
Make a connection to the data source Check to see whether there is a conflict, t
hat is, whether a value that has been changed in the rowset has also been change
d in the data source
Write the new values to the data source if there is no conflict
Close the connection
The RowSet interface may be implemented in any number of ways, and anyone may wr
ite an implementation. Developers are encouraged to use their imaginations in co
ming up with new ways to use rowsets.
[email protected] 34
Type III Driver WebLogic BEA weblogic.jdbc.common.internal.ConnectionPool Type
III Driver WebLogic BEA weblogic.jdbc.connector.internal.ConnectionPool Type II
& IV driver Oracle DB - Oracle
JDBC: There are three types of statements in JDBC Create statement : Is used to
execute single SQL statements. Prepared statement: Is used for executing paramet
erized quaries. Is used to run pre- compiled SEQL Statement. Callable statement:
Is used to execute stored procedures. Stored Procedures: Is a group of SQL stat
ements that perform a logical unit and performs a particular task. Are used to e
ncapsulate a set operations or queries t execute on data. execute() returns Bool
ean value
executeupdate( ) returns resultset Object
executeupdate( ) returns integer value
Loading the Driver:
Class.forName( sun.jdbc.odbc.JdbcOdbcDriver );
Conn=DriverManager.getConnection( jdbc:odbc:dsn , username , password );
( ORACLE Driver ) Class.forName( Oracle.jdbc.driver.OracleDriver ); Conn=DriverManag
er.getConnection( jdbc:oracle:thin:@192.168.1.105:1521:dbn ,
username , password );
Data base connection:
Public static void main(String args[]);
Connection con;
Statement st;
Resultset rs;
try {
// Getting all rows from Table Clas.forName( sun.jdbc.odbc.jdbcodbc );
Conn=DriverManager.getConnction( jdbc.odbc.dsn , username , password );
st = con.createstatement( );
rs = st.executestatement( SELECT * FROM mytable );
while(rs.next()); {String s= rs.getString(1); or rs.setString( COL_A ); int i = rs.
getInt(2); Float f = rs.getfloat(3); Process(s,i,f); } catch(SQLException e) { }
//Getting particular rows from Table
st = con.createstatement( );
rs = st.executequery( SELECT * FROM mytable WHERE COL A = Prasad );
while(rs.next( )); {String s = rs.getString(1); Int i = rs.getint(2); Float f =
rs.getfloat(3); Process(s,i,f); } Catch(SQLException e); { } //updating a row fr
om table.
try {
st = con.createstatement( );
[email protected] 35
int numupdated = st.executeupdate( UPDATE mytable SET COL_A = prasad WHERE COL_B= 746 );
rs = st.executeupdate(); conn.close(); } catch(SQLExceptione); { } // Receiving
rows from table try { st = con.preparedstatement( );
rs = st.execurtestatement( SELECT * FROM mytable SET COL_A=? );
int colunm=1;
rs.setString(colunm, hari );
rs = st.executeQuery( ); //update rwo from table st = con.createstatement( );
int numupdated = st.executeupdate( UPDATE mytable SET COL_A =? WHERE COL_B=? );
int column=1;
rs.setString(colunm, Prasad );
int column=2;
rs.setString(column, 746 );
int numupdated = st.executeupdate( );
} catch(SqlException e); { } //callable statement try { cst = con.preparecall( {ca
ll add1(??,??)} );
cst.setint(1,a);
cst.setint(2,b);
cst.registerOurPrameter(1,Types.INTEGER);
cst.executeQuery( );
System.out.println( rs.getString( ) ); } Connection Pool with webLogic server : You
can connect the database in your app using :
Class.forName( weblogic.jdbc.oci.Driver ).newInstance();
Java.sql.Connection
conn = Driver.connect( jdbc:weblogic:Oracle:dbn , username , password ); ( Or ) java.util
Properties prop = new java.util.Properties( );
prop.put( user , hari );
prop.put( password , prasad );
java.sql.Driver d = (java.sql.Driver)Class.forName( weblogic.jdbc.oci.Driver ).newIn
stance( );
java.sql.Connection conn = d.connect( jdbc:weblogic:Oracle:dbn , prop);
public static void main(String args[]) throws Exception {java.sql.Connection con
=null; java.sql.satement st =null; try { context ctx=null;
Hashtable ht = new Hashtable( );
ht.put(Context.INTIAL_CONTEXT_FACTORY, weblogic:jndi:WLInitialContextFACTORY );
ht.put(Context_PROVIDER_URL, t3://Localhost:7001 );
//get a context from JNDI lookup
ctx = newIntialContext( ):
java.sql.Datasourse ds =(java.sql.DataSource)ctx.lookup( OraclegbJNDI );
con =ds.getConnection( );
System.out.Println( Making Connection );
st = conn.createstatement( );
}
[email protected] 36
finally { try { if(stmt !=null) stmt.close( ); if(stmt !=null) con.close( ); } W
hat is a transaction transaction is collection of logical operation that perform
a task
Transaction should ACID properties.
A for Automicity
C for Consistency
I for Isolation
D for Durability.
A transaction can be termed as any operation such as storing, retrieving, updati
ng or deleting records in the table that hits the database. What is the purpose
of setAutoCommit( ) It is set as
ConnectionObject.setAutoComit();
after any updates through the program cannot be effected to the database.We have
commit
the transctions .For this puprpose we can set AutoCommit flag to Connection Obje
ct.
What are the three statements in JDBC & differences between them
which is used to run simple sql statements like select and update
2. PrepareStatment is used to run Pre compiled sql.
3. CallableStatement is used to execute the stored procedures.
What is stored procedure. How do you create stored procedure ? Stored procedures
is a group of SQL statements that performs a logical unit and performs a partic
ular task. Stored procedures are used to encapsulate a set of operations or quer
ies to execute on data. Stored Procedure is a stored program in database, PL/SQL
program is a Stored Procedure. Stored Procedures can be called from java byCal
lableStatement A precompiled collection of SQL statements stored under a name an
d processed as a unit. Stored procedures can: 1.Accept input parameters and retu
rn multiple values in the form of output parameters to the calling procedure or
batch. 2.Contain programming statements that perform operations in the database,
including calling other procedures. 3.Return a status value to a calling proced
ure or batch to indicate success or failure (and the reason for failure). What a
re batch updates? Batch Update facility allows multiple update operations to be
submitted to a database for processing at once. Using batch updates will improve
the performance. What is the difference between Resultset and Rowset A RowSet i
s a disconnected, serializable version of a JDBC ResultSet. The RowSet is differ
ent than other JDBC interfaces in that you can write a RowSet to be vendor neutr
al. A third party could write a RowSet implementation that could be used with an
y JDBC-compliant database. The standard implementation supplied by Sun uses a Re
sultSet to read the rows from a database and then stores those rows as Row objec
ts in a Vector inside the RowSet. In fact, a RowSet implementation could be writ
ten to get its data from any source. The only requirement is that the RowSet act
s as if it was a ResultSet. Of course, there is no reason that a vendor couldn't
write a RowSet implementation that is vendor specific.
The standard implementations have been designed to provide a fairly good range o
f functionality. The implementations provided are: CachedRowSetImpl - This is th
e implementation of the RowSet that is closest to the definition of RowSet funct
ionality that we discussed earlier. There are two ways to load this venkicse527@
gmail.com 37
RowSet. The execute ( ) method will load the RowSet using a Connection object. T
he populate( ) method will load the RowSet from a previously loaded ResultSet. W
ebRowSetImpl - This is very similar to the CachedRowSetImpl (it is a child class
) but it also includes methods for converting the rows into an XML document and
loading the RowSet with an XML document. The XML document can come from any Stre
am or Reader/Writer object. This could be especially useful for Web Services.
JdbcRowSetImpl - This is a different style of implementation that is probably le
ss useful in normal circumstances. The purpose of this RowSet is to make a Resul
tSet look like a JavaBean. It is not serializable and it must maintain a connect
ion to the database. The remaining two implementations are used with the first t
hree implementations: FilteredRowSetImpl - This is used to filter data from an e
xisting RowSet. The filter will skip records that don't match the criteria speci
fied in the filter when a next() is used on the RowSet. JoinRowSetImpl - This is
used to simulate a SQL join command between two or more RowSet objects. What ar
e the steps for connecting to the database using JDBC Using DriverManager: 1. Lo
ad the driver class using class.forName(driverclass) and class.forName() loads t
he driver class and passes the control to DriverManager class
2. DriverManager.getConnection() creates the connection to the databse
Using DataSource.
DataSource is used instead of DriverManager in Distributed Environment with the
help of JNDI. 1. Use JNDI to lookup the DataSource from Naming service server. 3
. DataSource.getConnection method will return Connection object to the database
What is Connection Pooling ? Connection pooling is a cache of data base connecti
ons that is maintained in memory , so that the connections may be reuse. Connect
ion pooling is a place where a set of connections are kept and are used by the d
ifferent programers with out creating conncections to the database(it means ther
e is a ready made connection available for the programmers where he can use). Af
ter using the connection he can send back that connection to the connection pool
. Number of connections in connection pool may vary.
How do you implement Connection Pooling Connection Pooling can be implemented by
the following way. * A javax.sql.ConnectionPoolDataSource interface that serves
as a resource manager connection factory for pooled java.sql.Connection objects
. Each database vendors provide the implementation for that interface.
For example, the oracle vendors implementation is as follows: oracle.jdbc.pool.o
racleConnectionPoolDataSource Class. A javax.sql.PooledConnection interface enca
psulates the physical connection for the database. Again, the vendor provides th
e implementation. What Class.forName( ) method will do Class.forName() is used t
o load the Driver class which is used to connect the application with Database.
Here Driver class is a Java class provided by Database vendor. What is the diffe
rence between JDBC 1.0 and JDBC 2.0 The JDBC 2.0 API includes many new features
in the java.sql package as well as the new Standard Extension package, javax.sql
. This new JDBC API moves Java applications into the world of heavy-duty databas
e computing. New features in the java.sql package include support for SQL3 data
types, scrollable result sets, programmatic updates, and batch updates. The new
JDBC Standard Extension API, an integral part of Enterprise JavaBeans (EJB) tech
nology, allows you to write distributed transactions that use
[email protected] 38
connection pooling, and it also makes it possible to connect to virtually any ta
bular data source, including files and spread sheets. The JDBC 2.0 API includes
many new features like 1. Scrollable result sets 2. Batch updates
3. Connection Pooling
4. Distributed transactions
5. set autocomit ( ) What is JDBC? JDBC is a layer of abstraction that allows us
ers to choose between databases. It allows you to change to a different database
engine and to write to a single API. JDBC allows you to write database applicat
ions in Java without having to concern yourself with the underlying details of a
particular database.
What are the two major components of JDBC? One implementation interface for data
base manufacturers, the other implementation interface for application and apple
t writers. What is JDBC Driver interface? The JDBC Driver interface provides ven
dor-specific implementations of the abstract classes provided by the JDBC API. E
ach vendors driver must provide implementations of the java.sql.Connection,State
ment,PreparedStatement, CallableStatement, ResultSet and Driver.
What are the common tasks of JDBC? Create an instance of a JDBC driver or load J
DBC drivers through jdbc.drivers
Register a driver
Specify a database
Open a database connection
Submit a query
Receive results
What packages are used by JDBC? There are 8 packages: java.sql.Driver, Connectio
n,Statement, PreparedStatement, CallableStatement, ResultSet, ResultSetMetaData,
DatabaseMetaData. What are the flow statements of JDBC? A URL string -->getConn
ection-->DriverManager-->Driver-->Connection-->Statement-- >executeQuery-->Resul
tSet.
1). Register the Driver
2) load the Driver
3)get the connection
4) create the statement
5) Execute the query
6) fetch the results with ResultSet
What are the steps involved in establishing a connection? This involves two step
s: (1) loading the driver and (2) making the connection. How can you load the dr
ivers? Loading the driver or drivers you want to use is very simple and involves
just one line of code. If, for example, you want to use the JDBC-ODBC Bridge dr
iver, the following code will load it:
Eg. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Your driver documentation wil
l give you the class name to use. For instance, if the class name is jdbc.Driver
XYZ , you would load the driver with the following line of code: E.g. Class.forN
ame("jdbc.DriverXYZ"); [email protected] 39
When you will potentially use a distributed environment (if your enterprise bea
n should be independent of its deployment place), you should obviously choose re
mote client view. Use remote client view when you need to be sure that parameter
s passed between your EJB and the client (and/or other enterprise beans) should
be passed "by value" instead of "by reference." With pass-by-value, the bean wil
l have its own copy of the data, completely separated from the copy of the data
at the client. With local client view, you can do pass- by-reference, which mean
s your bean, as well as the client, will work directly with one copy of the data
. Any changes made by the bean will be seen by the client and vice versa. Pass-
by-reference eliminates time/system expenses for copying data variables, which p
rovides a performance advantage.
If you create an entity bean, you need to remember that it is usually used with
a local client view. If your entity bean needs to provide access to a client out
side of the existing JVM (i.e., a remote client), you typically use a session be
an with a remote client view. This is the so-called Session Facade pattern, the
goal of which is that the session bean provides the remote client access to the
entity bean.
If you want to use container-managed relationship (CMR) in your enterprise bean,
you must expose local interfaces, and thus use local client view. This is menti
oned in the EJB specification.
Enterprise beans that are tightly coupled logically are good candidates for usin
g local client view. In other words, if one enterprise bean is always associated
with another, it is perfectly appropriate to co-locate them (i.e., deploy them
both in one JVM) and organize them through a local interface.
What is EJB Query Language EJB QL is somewat similar to SQL. But ejb ql is used
to retrieve data from bean objects where as sql is used to retrieve data from ta
bles. What is ACID ACID is releated to transactions. It is an acronyam of Atomic
, Consistent, Isolation and Durable. Transaction must following the above four p
roperties to be a better one Atomic: It means a transaction must execute all or
nothing at all. Consistent: Consistency is a transactional characteristic that m
ust be enforced by both the transactional system and the application developer I
solation: Transaation must be allowed to run itselft without the interference of
the other process or transactions. Durable: Durablity means that all the data c
hanges that made by the transaction must be written in some type of physical sto
rage before the transaction is successfully completed. This ensures that transac
itons are not lost even if the system crashes. What are the various isolation le
vels in a transaction and differences between them There are three isolation lev
els in Transaction. They are 1. Dirty reads 2.Non repeatable reads 3. Phantom re
ads. Dirrty Reads: If transaction A updates a record in database followed by the
transaction B reading the record then the transaction A performs a rollback on
its update operation, the result that transaction B had read is invalid as it ha
s been rolled back by transaction A. NonRepeatable Reads :If transaction A reads
a record, followed by transaction B updating the same record, then transaction
A reads the same record a second time, transaction A has read two different valu
es for the same record. Phantom Reads :If transaction A performs a query on the
database with a particular search criteria (WHERE clause), followed by transacti
on B creating new records that satisfy the search criteria, followed by transact
ion A repeating its query, transaction A sees new, phantom records in the result
s of the second query.
What are the various transaction attributes and differences between them venkics
[email protected] 110
There are six transaction attributes that are supported in EJB. 1. Required - T1
---T1 0---T1
2. RequiresNew T1---T2
0---T1
3. Mandatory - T1---T1 0---Error 4. Supports - T1---T1 0---0 5. NotSupported - T
1---0 0---0 6. Never - T1---Error 0---0 What is the difference between activatio
n and passivation Activation and Passivation is appilicable for only Stateful se
ssion bean and Entity bean. When Bean instance is not used for a while by client
then EJB Container removes it from memory and puts it in secondary storage (oft
en disk) so that the memory can be reused. This is called Passivation.
When Client calls the bean instance again then Container takes the passivated be
an from secondary storage and puts it in memory to serve the client request. Thi
s is called Activation.
What is Instance pooling pooling of instances. in stateless session beans and En
tity Beans server maintains a pool of instances.whenever server got a request fr
om client, it takes one instance from the pool and serves the client request.
What is the difference between HTTPSession and Stateful Session Bean From a logi
cal point of view, a Servlet/JSP session is similar to an EJB session. Using a s
ession, in fact, a client can connect to a server and maintain his state. But, i
s important to understand, that the session is maintained in different ways and,
in theory, for different scopes. A session in a Servlet, is maintained by the S
ervlet Container through the HttpSession object, that is acquired through the re
quest object. You cannot really instantiate a new HttpSession object, and it doe
s not contains any business logic, but is more of a place where to store objects
.
A session in EJB is maintained using the SessionBeans. You design beans that can
contain business logic, and that can be used by the clients. You have two diffe
rent session beans: Stateful and Stateless. The first one is somehow connected w
ith a single client. It maintains the state for that client, can be used only by
that client and when the client "dies" then the session bean is "lost".
A Stateless Session Bean does not maintain any state and there is no guarantee t
hat the same client will use the same stateless bean, even for two calls one aft
er the other. The lifecycle of a Stateless Session EJB is slightly different fro
m the one of a Stateful Session EJB. Is EJB Containers responsability to take ca
re of knowing exactly how to track each session and redirect the request from a
client to the correct instance of a Session Bean. The way this is done is vendor
dependant, and is part of the contract.
What is the difference between find and select methods in EJB select method is n
ot there in EJBs A select method is similar to a finder method for Entity Beans,
they both use EJB-QL to define the semantics of the method. They differ in that
an ejbSelect method(s) are not exposed to the client and the ejbSelect method(s
) can return values that are defined as cmp-types or cmr-types. venkicse527@gmai
l.com 111
What are the optional clauses in EJB QL Three optional clauses are available in
EJB Ql.
1. SELECT
2. FROM
3. WHERE
The EJB QL must always contain SELECT and FROM clauses. The WHERE clause is opti
onal. The FROM clause provides declarations for the identification variables bas
ed on abstract schema name, for navigating through the schema. The SELECT clause
uses these identification variables to define the return type of the query, and
the WHERE clause defines the conditional query.
What is handle in EJB To get hold the session state of the Stateful Session bean
. A handle is an abstraction of a network reference to an EJB object. A handle i
s intended to be used as a "robust" persistent reference to an EJB object. What
is the difference between JNDI context, Initial context, session context and ejb
context JNDI ContextProvides a mechanism to lookup resources on the network
Initial Contextconstructor provides the initial context.
Session Contexthas all the information a session bean would require from the con
tainer
Entity Contexthas all the information that an Entity bean would need from a cont
ainer
Ejb Contextcontains the information that is common to both the session and entit
y bean.
What is the difference between sessioncontext and entitycontext Session Context
Contains information that a Session Bean would require from the container Entity
Context contains the information that an Entity Bean would require from a conta
iner What is the difference between EAR, JAR and WAR file In J2EE application mo
dules are packaged as EAR, JAR and WAR based on their functionality JAR: Java Ar
chive File EJB modules which contains enterprise java beans class files and EJB
deployment descriptor are packed as JAR files with .jar extenstion WAR : Web Arc
hive File Web modules which contains Servlet class files,JSP FIles,supporting fi
les, GIF and HTML files are packaged as JAR file with .war( web achive) extensio
n EAR : Enterprise File All above files(.jar and .war) are packaged as JAR file
with .ear ( enterprise archive) extension and deployed into Application Server.
What is deployment descriptor Deployment Descriptor is a XML document with .xml
extenion. It basically descripes the deployment settings of an application or mo
dule or the component. At runtime J2EE server reads the deployment descriptor an
d understands it and then acts upon the component or module based the informatio
n mentioned in descriptor.
For example EJB module has a deployment descriptor ejb-jar.xml where we mention
whether it is session or entity or mesage driven bean and where is the home, rem
ore and Bean classes are located and what type of transaction etc. In a simple w
ord, without deployment descritor the Container ( EJB/Servlet/JSP container) wil
l not know what to do with that module.
Deployment Descriptor is a file located in the WEB-INF directory that controls t
he behaviour
of Servlets and JSP.
The file is called Web.xml and contains
xmlHeader [email protected] 112
Web.xml DOCTYPE Sevlet name Web-appelements------ Servlet Class Init-parm Servl
et Configuration : <web-app> <Servlet>
<Servlet-name>Admin</Servlet-name>
<Servlet-Class>com.ds.AdminServlet</Servlet-class>
</Servlet> <init-param> <param-value> </param-value> <param-name> admin.com</par
am-name> </init-param> <Servlet-mapping>
<Servlet-name>Admin</Servlet-name>
<url-pattern>/Admin</url-pattern>
</Servlet-mapping> </web-app> EJB Deployment descriptor : Ejb-jar.xml META-INF W
eblogic-ejb-jar.xml <ejb-jar> <enterprise-bean> </Session>
<ejb-name>Statefulfinacialcalcu</ejb-name>
<home>fincal.stateful.fincalc</home>
<remote> fincal.stateful.fincalc </remote>
<ejb-Class> fincal.stateful.fincalcEJB <ejb-Class>
<session-type> Stateful </session-type> [email protected] 113
<transaction-type> Container </transaction-type> </Session> </enterprise-bean>
<assembly-descriptor> <container-transaction>
<method>
<ejb-name> Statefulfinacialcalcu </ejb-name>
<method-name> * </method-name>
</method>
<transaction-attribute> supports </transaction-attribute> </container-transactio
n> <assembly-descriptor> <ejb-jar> weblogic-ejb-jar.xml <weblogic-ejb-jar> <webl
ogic-enterprise-bean>
<ejb-name> Statefulfinacialcalcu </ejb-name>
<jndi-name> statefulfinacalc </jndi-name>
</weblogic-enterprise-bean> </weblogic-ejb-jar> What is CMR CMR - Container Mana
ged Relationships allows the developer to declare various types of relationships
between the entity beans What is the difference between CMP 1.1 and CMP 2.0 CMR
and sub classing of the CMP bean by the container What is the difference betwee
n optimistic locking and pessimistic locking Optimistic locking assumes that no
one would read or change the data while changes are being by a bean Pessimistic
locking would rather lock down the data so that no one can access it What is laz
y loading Lazy loading is a characteristic of an application when the actual loa
ding and instantiation of a class is delayed until the point just before the ins
tance is actually used. The goal is to only dedicate memory resources when neces
sary by only loading and instantiating an object at the point when it is absolut
ely needed.
Tools such as Eclipse have popularized the lazy-loading approach as they use the
facility to control the load and initialization of heavyweight plug-ins. This g
ives the double bonus of speeding up the initial load time for the application,
as not all plug-ins are loaded straightaway; ensuring efficiency as only the plu
g-ins that are used are loaded at all.
Is Decorator an EJB design pattern No , If i throw a custom ApplicationException
from a business method in Entity bean which is participating in a transaction,
would the transaction be rolled back by container. Does container rolls back tra
nsaction only in case of SystemExceptions
Yes, the rollback will occur For declarative transactions, container will rollba
ck on systemException. Container has no way to know whether a speicific applicat
ion exception is serious enough to roll back the participated transaction. Use s
etRollbackOnly() to doom the transaction.
What are simple rules that a Primary key class has to follow Implement the equal
s and hashcode methods. [email protected] 114
What is abstract schema CMP uses abstract schema to map to the physical database
What is re-entrant. Is session beans reentrant. Is entity beans reentrant Re-en
trant means where Bean A calls methods of Bean B and then Bean B turns around an
d calls methods of Bean A. The above all within a single thread of control. This
is also called as loopback.
Entity beans are the only one bean that is reentrant. Neither Session bean nor M
essage Driven Bean are reentrant. When Entity bean, we have to declare in the de
ployment descriptor whether it is reentrant ( true or false).
Why an onMessage call in Message-driven bean is always a seperate transaction Th
e MDB is stateless and inherently each message is unique with respect to the MDB
. Each message needs to be processed independently. Hence the need for separate
transactions Does Stateful Session bean support instance pooling All Beans suppo
rt Instance Pooling statefull session bean does not maintain instance pooling, s
tateless session beans and entity beans can maintain instance pooling Why does E
JB needs two interfaces(Home and Remote Interface) Home is to provide Lookup fro
m JNDI while Remote is to provide Object Instantiated Can I invoke Runtime.gc()
in an EJB No Can a Session Bean be defined without ejbCreate() method No Why are
ejbActivate() and ejb Passivate() included for stateless session bean even thou
gh they are never required as it is nonconversational bean To have a consistent
interface, so that there is no different interface that you need to implement fo
r Stateful Session Bean and Stateless Session Bean. Both Stateless and Stateful
Session Bean implement javax.ejb.SessionBean and this would not be possible if s
tateless session bean is to remove ejbActivate and ejbPassivate from the interfa
ce. You could argue that the two (stateful and stateless) are so different that
they should have their own interface but Sun did not think so. They made both se
ssion beans implement the same interface and provided deployment descriptor to d
enote which one is it that you are deploying.
With EJB 1.1 specs, why is unsetSessionContext() not provided in Session Beans,
like unsetEntityContext() in Entity Beans This was the answer Provided by some o
ne... According to Mohan this one is not correct. Please see Mohan's reply below
and more in the comments section. ejbRemove() is called for session beans every
time the container destroyes the bean. So you can use this method to do the stu
ff you typically would do in unsetEntityContext(). For entity beans ejbRemove()
is only called if the user explicitly deletes the bean. I think that is the reas
on why the engineers at SUN invented the unsetEntityContext() for this kind of b
ean.
What is the difference between ejbStore() and ejbLoad() When the EJB container n
eeds to synchronize the instance variables of an entity bean with the correspond
ing values stored in a database, it invokes the ejbLoad and ejbStore methods. Th
e ejbLoad method refreshes the instance variables from the database, and the ejb
Store method writes the variables to the database. The client cannot call ejbLoa
d and ejbStore.
What is the difference between ejbCreate() and ejbPostCreate() Session and Messa
ge Driven Bean will have only ejbCreate() method and no ejbPostCreate() method.
Entity bean will have both ejbCreate() and ejbPostCreate() methods.
[email protected] 115
The ejbPostCreate method returns void, and it has the same input parameters as t
he ejbCreate method. If we want to set a relationship field to initialize the be
an instance, we should do so in the ejbPostCreate method. we cannot set a relati
onship field in the ejbCreate method.
The ejbPostCreate() allows the bean to do any post-create processing before it b
egins serving client requests. For every ejbCreate() there must be a matching (m
atching arguments) ejbPostCreate() method.
Is stateless Sessiob bean create() method contains any parameters No. This metho
d must not contain any input parameters and cannot be overloaded as well. How ca
n i retrieve from inside my Bean(Stateless session and Entity CMP) the user name
which i am serving (the user name of user just logged in my web application)
Inside an EJB you may retrieve the "Caller" name, that is the login id by invoki
ng: sessionContext.getCallerIdentity().getName() where sessionContext is the ins
tance of "SessionContext" (setSessionContext) passed to the Session Bean, or the
instance of "EntityContext" (setEntityContext) passed to the Entity Bean.
What is EJB architecture(components) EJB Architecture consists of : a) EJB Serve
r b) EJB containers that run on these servers, c) Home Objects, Remote EJB Objec
ts and Enterprise Beans that run within these containers, d) EJB Clients and e)
Auxillary systems like JNDI (Java Naming and Directory Interface), JTS(Java Tran
saction Service) and security services. If my session bean with single method in
sert record into 2 entity beans, how can I know that the process is done in same
transaction (the attributes for these beans are Required)
If your method in the session bean is already running under a transaction the ca
lls to any other bean which have been deployed with trans-attribute 'Required' w
ill be executed within the same transaction context.
So if your session bean is using container-managed transactions and your method
is deployed with 'Required', 'RequiresNew' or 'Mandatory', you can safely assume
that the calls to your entity beans are handled under same transaction. If you'
re not running in a transaction, a separate transaction will be set up for each
call to your entity beans.
If your session bean is using bean-managed transactions, you can ensure that the
calls are handled in the same transaction by : javax.transaction.UserTransactio
n tran= null;
try{
tran=ctx.getUserTransaction();
tran.begin();
myBeanHome1.create(....);
myBeanHome2.create(...);
tran.commit();
}catch(...){}
You may want to check if you're already running in a transaction by calling tran
.getStatus().
Is there a way to get the original exception object from inside a nested or wrap
ped Exception (for example an EJBException or RemoteException) Absolutely yes, b
ut the way to do that depends on the Exception, since there are no standards for
that. Some examples: ·When you have an javax.ejb.EJBException, you can use
the getCausedByException() that returns a java.lang.Exception. ·A java.rmi.RemoteE
xception there is a public field called detail of type java.lang.Throwable ·With a
java.sql.SQLException you need to use the method getNextException() to get the
[email protected] 116
chained java.sql.SQLException. ·When you have an java.lang.reflect.Invocationtarge
tException, you can get the thrown target java.lang.Throwable using the getTarge
tException() method. Can undefined primary keys are possible with Entity beans?I
f so, what type is defined? Yes,undefined primary keys are possible with Entity
Beans.The type is defined as java.lang.Object. When two entity beans are said to
be identical?Which method is used to compare identical or not? Two Entity Beans
are said to be Identical,if they have the same home inteface and their primary
keys are the same.To test for this ,you must use the component inteface's isIden
tical() method.
Why CMP beans are abstract classes? We have to provide abstract data to object m
apping that maps the fields in our bean to a batabase, and abstract methods meth
ods that corelate these fields. Is instance pooling necessary for entity beans?
One of the fundamental concepts of Entity Beans is that they are the pooled obje
cts.Instance pooling is the service of the container that allows the container t
o reuse bean instances,as opposed to creating new ones every time a request for
a bean is made.This is a perfomance optimizatio done by the container.
What is the difference b/w sendRedirect() and <jsp: forward>? sendredirect will
happen on clint side & request , rsponse will be newly created, for forward acti
on it is server side action & request, response is passed & not modified or dest
royed.
How the abstract classes in CMP are converted into concrete classes? EJB2.0 allo
ws developer to create only abstract classes and at the time of deployement the
container creates concrete classes of the abstract. It is easy for container to
read abstract classes and appropriately generate concrete classes.
Questions 1)A developer successfully creating and tests a stateful bean followin
g deployment, intermittent "NullpointerException" begin to occur, particularly w
hen the server is hardly loaded. What most likely to
related problem. a) setSessionContext b) ejbCreate c) ejbPassivate d) beforeComp
letion e) ejbLoad
2)2 example implementations os Proxy are RMI & EJb
3)If an RMI parameter implements java.rmi.Remote, how is it passed "on-the-wire?
"
Choice 1 : It can never be passed. [email protected] 117
Choice 2 : It is passed by value. Choice 3 : It cannot be passed because it impl
ements java.rmi.Remote. Choice 4 : It cannot be passed unless it ALSO implements
java.io.Serializable. Choice 5 : It is passed by reference. ans)2 4)public sync
hronized void txTest(int i) { System.out.println("Integer is: " + i); } What is
the outcome of attempting to compile and execute the method above, assuming it i
s implemented
in a stateful session bean?
Choice 1 : Run-time error when bean is created
Choice 2 : The method will run, violating the EJB specification.
Choice 3 : Compile-time error for bean implementation class
Choice 4 : Compile-time error for remote interface
Choice 5 : Run-time error when the method is executed
ans)2 5)What is the CORBA naming service equivalent of JNDI? Choice 1 : Interfac
e Definition Language Choice 2 : COS Naming Choice 3 : Lightweight Directory Acc
ess Protocol Choice 4 : Interoperable Inter-Orb Protocol Choice 5 : Computer Nam
ing Service ans)2 6)InitialContext ic = new InitialContext();
TestHome th = (TestHome)
ic.lookup("testBean/TestBean");
TestRemote beanA = th.create();
TestRemote beanB = th.create();
TestRemote beanC = th.create();
beanC.remove();
TestRemote beanD = th.create();
TestRemote beanE = th.create();
beanC = th.create();
Given the above code, container passivates which bean instance first if the cont
ainer limited the bean pool size to four beans and used a "least-recently-used"
algorithm to passivate? Choice 1 : Bean A Choice 2 : Bean B Choice 3 : Bean C Ch
oice 4 : Bean D Choice 5 : Bean E
7)Which one of the following phenomena is NOT addressed by read-consistency? A.P
hantom read b.Cached read c.Dirty read d.Non-repeatable read e.Fuzzy read ans)b,
e 8)Which one of the following methods is generally called in both ejbLoad() and
ejbStore()? a getEJBObject() b getHandle() c remove() d getEJBHome() egetP rim
aryKey() ans)e 9)public void ejbCreate(int i) { System.out.println("ejbCreate(i)
"); } [email protected] 118
Given a currently working stateless session bean, what will be the outcome upon
deploying and executing the bean if you added the above unique method to the imp
lementation class of a
stateless session bean (and made no other changes)?
a Compile time error during stub/skeleton generation
b Compile time error for home interface
c Code will compile without errors.
d Compile time error for remote interface
e Compile time error for bean implementation
ans)a 10)Given the above code in your stateless session bean business method imp
lementation, and the transaction is container-managed with a Transaction Attribu
te of TX_SUPPORTS, which one of the following is the first error generated?
a Error when compiling home interface
b Error while generating stubs and skeletons
c NullPointerException during deployment
d Runtime error
e Compile-time error for the bean implementation
ans)b 11)Which one of the following is the result of attempting to deploy a stat
eless session bean and execute one of the method M when the bean implementation
contains the method M NOT defined in the remote interface?
a Compile time error for remote interface
b Compile time error for bean implementation
c Compile time error during stub/skeleton generation
d Code will compile without errors.
e Compile time error for home interface
ans)d 12)Which one of the following characteristics is NOT true of RMI and Enter
prise Java Beans?
a They must execute within the confines of a Java virtual machine (JVM).
b They serialize objects for distribution.
c They require .class files to generate stubs and skeletons.
d They do not require IDL.
e They specify the use of the IIOP wire protocol for distribution.
ans)a 13. Which one of the following is the result of attempting to deploy a sta
teless session bean and execute one of the method M when the bean implementation
contains the method M NOT defined in the remote interface?
a Compile time error for remote interface
b Compile time error for bean implementation
c Compile time error during stub/skeleton generation
d Code will compile without errors.
e Compile time error for home interface
14. If a unique constraint for primary keys is not enabled in a database, multip
le rows of data with the same primary key could exist in a table. Entity beans t
hat represent the data from the table described above are likely to throw which
exception?
a NoSuchEntityException
b FinderException
c ObjectNotFoundException
d RemoveException
e NullPointerException
[email protected] 119
15. A developer needs to deploy an Enterprise Java Bean, specifically an entity
bean, but is unsure if the bean container is able to create and provide a transa
ction context. Which attribute below will allow successful deployment of the bea
n?
a BeanManaged
b RequiresNew
c Mandatory
d Required
e Supports
16. What is the outcome of attempting to compile and execute the method above, a
ssuming it is implemented in a stateful session bean?
a Compile-time error for remote interface
b Run-time error when bean is created
c Compile-time error for bean implementation class
d The method will run, violating the EJB specification.
e Run-time error when the method is executed
17. Which one of the following is the result of attempting to deploy a stateless
session bean and execute one of the method M when the bean implementation conta
ins the method M NOT defined in the remote interface?
a Compile time error for remote interface
b Compile time error for bean implementation
c Compile time error during stub/skeleton generation
d Code will compile without errors.
e Compile time error for home interface
18. If a unique constraint for primary keys is not enabled in a database, multip
le rows of data with the same primary key could exist in a table. Entity beans t
hat represent the data from the table described above are likely to throw which
exception?
a NoSuchEntityException
b FinderException
c ObjectNotFoundException
d RemoveException
e NullPointerException
19. There are two Enterprise Java Beans, A and B. A method in "A" named "Am" beg
ins execution, reads a value v from the database and sets a variable "X" to valu
e v, which is one hundred. "Am" adds fifty to the variable X and updates the dat
abase with the new value of X. "Am" calls "Bm", which is a method in B. "Bm" beg
ins executing. "Bm" reads an additional value from the database. Based on the va
lue, "Bm" determines that a business rule has been violated and aborts the trans
action. Control is returned to "Am".Requirement: If "Bm" aborts the transaction,
it is imperative that the original value be read from the database and stored i
n variable X.
Given the scenario above, which Transaction Attributes will most likely meet the
requirements stated? a A-RequiresNew, B-Mandatory b A-Mandatory, B-RequiresNew
c A-RequiresNew, B-Supports d A-NotSupported, B-RequiresNew e A-RequiresNew, B-R
equiresNew [email protected] 120 20.) If an RMI parameter implements java.rm
i.Remote, how is it passed "on-the-wire?"
Choice 1 : It can never be passed.
Choice 2 : It is passed by value.
Choice 3 : It cannot be passed because it implements java.rmi.Remote.
Choice 4 : (Correct) It cannot be passed unless it ALSO implements java.io.Seria
lizable.
Choice 5 : It is passed by reference.
21.) public synchronized void txTest(int i) { System.out.println("Integer is: "
+ i); } What is the outcome of attempting to compile and execute the method abov
e, assuming it is implemented in a stateful session bean?
Choice 1 : Run-time error when bean is created
Choice 2 : The method will run, violating the EJB specification.
Choice 3 : (Correct) Compile-time error for bean implementation class
Choice 4 : Compile-time error for remote interface
Choice 5 : Run-time error when the method is executed
22.) What is the CORBA naming service equivalent of JNDI?
Choice 1 : Interface Definition Language
Choice 2 : (Correct) COS Naming
Choice 3 : Lightweight Directory Access Protocol
Choice 4 : Interoperable Inter-Orb Protocol
Choice 5 : Computer Naming Service
InitialContext ic = new InitialContext();
TestHome th = (TestHome)
ic.lookup("testBean/TestBean");
TestRemote beanA = th.create();
TestRemote beanB = th.create();
TestRemote beanC = th.create();
beanC.remove();
TestRemote beanD = th.create();
TestRemote beanE = th.create();
beanC = th.create();
Given the above code, container passivates which bean instance first if the cont
ainer limited the
bean pool size to four beans and used a "least-recently-used" algorithm to passi
vate?
Choice 1
Bean A Choice 2
Bean B
Choice 3
Bean C
Choice 4 (Correct, Since only Statefull session bean and Entity Bean can be pass
ivated, and Entitybean can not call as th.create() normally, I take it as statef
ull session bean)
Bean D
Choice 5
Bean E
------------------------- [email protected] 121 Which one of the following p
henomena is NOT addressedby read-consistency?
a Phantom read (Correct)
b Cached read
c Dirty read
d Non-repeatable read
e Fuzzy read
-------------------------- Which one of the following methods is generally calle
d
in both
ejbLoad() and ejbStore()?
a getEJBObject()
b getHandle()
c remove()
d getEJBHome()
e getPrimaryKey() (Correct)
[email protected] 122