package org.jboss.test.jca.ejb;
import javax.ejb.SessionBean;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import javax.ejb.EJBException;
import javax.ejb.SessionContext;
import javax.naming.NamingException;
import org.jboss.resource.adapter.jdbc.WrappedConnection;
import org.jboss.test.jca.jdbc.TestConnection;
public class JDBCStatementTestsConnectionSessionBean implements SessionBean {
public JDBCStatementTestsConnectionSessionBean() {
}
public void testConnectionObtainable()
{
try
{
DataSource ds = (DataSource)new InitialContext().lookup("java:StatementTestsConnectionDS");
Connection c = ds.getConnection();
WrappedConnection wc = (WrappedConnection)c;
Connection uc = wc.getUnderlyingConnection();
TestConnection tc = (TestConnection)uc;
c.close();
tc.setFail(true);
int closeCount1 = tc.getClosedCount();
c = ds.getConnection();
if (closeCount1 == tc.getClosedCount())
{
throw new EJBException("no connections closed!, closedCount: " + closeCount1);
} c.close();
for (int i = 0; i < 10; i++)
{
int closeCount = tc.getClosedCount();
c = ds.getConnection();
if (closeCount == tc.getClosedCount())
{
throw new EJBException("no connections closed! at iteration: " + i + ", closedCount: " + closeCount);
} c.close();
}
}
catch (SQLException e)
{
throw new EJBException(e);
} catch (NamingException e)
{
throw new EJBException(e);
}
}
public void ejbCreate()
{
}
public void ejbActivate()
{
}
public void ejbPassivate()
{
}
public void ejbRemove()
{
}
public void setSessionContext(SessionContext ctx)
{
}
public void unsetSessionContext()
{
}
}