package org.glassfish.jdbc.devtests.v3.test; import java.io.PrintWriter; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.util.HashMap; import java.util.Map; import javax.naming.InitialContext; import javax.sql.DataSource; import javax.transaction.SystemException; import org.glassfish.jdbc.devtests.v3.util.HtmlUtil; /** * * @author jagadish */ public class ConnectionSharingTest implements SimpleTest{ Map<String, Boolean> resultsMap = new HashMap<String, Boolean>(); public Map<String, Boolean> runTest(DataSource ds1, PrintWriter out) { HtmlUtil.printHR(out); try { if (testConnectionSharing(ds1, out)) { resultsMap.put("connection-sharing", true); }else{ resultsMap.put("connection-sharing", false); } } catch (Exception e) { resultsMap.put("connection-sharing", false); } HtmlUtil.printHR(out); return resultsMap; } private boolean testConnectionSharing(DataSource ds1, PrintWriter out) throws SystemException { boolean result = false; Connection con = null; Connection con1 = null; Statement stmt = null; ResultSet rs = null; out.println("<h4> connection-sharing test </h4>"); javax.transaction.UserTransaction ut = null; try { out.println("<br>Starting test ..."); InitialContext ic = new InitialContext(); ut = (javax.transaction.UserTransaction) ic.lookup("java:comp/UserTransaction"); out.println("<br>Able to lookup UserTransaction"); ut.begin(); out.println("<br> Started UserTransaction"); out.println("<br>Trying to get connection ..."); out.println("<br>ds value : " + ds1); con = ds1.getConnection(); com.sun.appserv.jdbc.DataSource myDS = ((com.sun.appserv.jdbc.DataSource) ds1); Connection con_ = myDS.getConnection(con); out.println("<br>Got connection - con : " + con_); con1 = ds1.getConnection(); Connection con1_ = myDS.getConnection(con1); out.println("<br> Got connection - con1 : " + con1_); if (con1_ == con_) { result = true; } ut.commit(); } catch (Throwable e) { HtmlUtil.printException(e, out); out.println("Rolling back transaction<br>"); ut.rollback(); result = false; } finally { try { if (con1 != null) { con1.close(); } } catch (Exception e) { HtmlUtil.printException(e, out); } try { if (con != null) { con.close(); } } catch (Exception e) { HtmlUtil.printException(e, out); } out.println("<br> Test result : " + result); return result; } } }