This devtest tries to test whether the appserver
destroys the connection when it is marked as bad.

-------------------------------------------------------------------------------------
test1() READONLY Operation with db
Pool - Steady, max-pool-size : 1
Tx Attribute "Required"
ejb-descriptor - "Shareable"

Client will call test1() to get the "hashcode" of physical connection.
Client will call test1() again and if the values of physical connection in first & second
call differ, test is passed.
-------------------------------------------------------------------------------------

test2()  WRITE Operation with db
Pool - Steady, max-pool-size : 1
Tx Attribute "Required"
ejb-descriptor - "Shareable"

Client will call test2() to get the "hashcode" of physical connection.
Client will call test2() again and if the values of physical connection in first & second
call differ, test is passed.
-------------------------------------------------------------------------------------

test3()  No Operation with db
Pool - Steady, max-pool-size : 1
Tx Attribute "NotSupported"
ejb-descriptor - "Shareable"

EJB will get connections iteratively for 5 times. Each iteration must return a different connection
indicating that the connection is dropped.

-------------------------------------------------------------------------------------

test4()  Write Operation with db
Pool - Steady, max-pool-size : 1
Tx Attribute "NotSupported"
ejb-descriptor - "Shareable"

EJB will get connections iteratively for 5 times. Each iteration must return a different connection
indicating that the connection is dropped.

-------------------------------------------------------------------------------------
Test case for IT : 7249
https://glassfish.dev.java.net/issues/show_bug.cgi?id=7249

test5()  Write Operation with db (local tx connection, with unshareable mode)
Tx Attribute "Required"
ejb-descriptor - "unshareable"

EJB will get connections iteratively for specified number of times. The method also takes 
the expected behavior (whether getConnection() should succeed or fail) and based on the expected
behavior and actual behavior test status (PASS/FAIL) is determined.

Refer client/Client.java test5() :  3 variants
a) request to get one local-tx unshareable connection  (allowed by GlassFish)
b) request to get multipe local-tx unshareable connections (must be rejected by GlassFish)
c) request to get multipe(5) local-tx unshareable connections (must be rejected by GlassFish)

-------------------------------------------------------------------------------------

