Initial Contribution
Signed-off-by: Vinay Vishal <vinay.vishal@oracle.com>
diff --git a/appserver/tests/appserv-tests/devtests/jdbc/onlygetconnectionservlet/servlet/OnlyGetConnectionServlet.java b/appserver/tests/appserv-tests/devtests/jdbc/onlygetconnectionservlet/servlet/OnlyGetConnectionServlet.java
new file mode 100644
index 0000000..0d36c21
--- /dev/null
+++ b/appserver/tests/appserv-tests/devtests/jdbc/onlygetconnectionservlet/servlet/OnlyGetConnectionServlet.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package com.sun.s1asdev.jdbc.onlygetconnectionservlet.servlet;
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.transaction.*;
+import javax.sql.*;
+import java.sql.*;
+import java.io.*;
+import javax.naming.InitialContext;
+
+/**
+ * Collection of getConnection tests using a servlet
+ *
+ * @author aditya.gore@sun.com
+ */
+
+public class OnlyGetConnectionServlet extends HttpServlet {
+
+ private DataSource ds;
+ private PrintWriter out;
+ private UserTransaction utx;
+
+ public void doGet( HttpServletRequest req, HttpServletResponse resp )
+ throws IOException, ServletException
+ {
+System.out.println(" @@@@ in doGet");
+ out = resp.getWriter();
+ writeHeader();
+
+ try {
+ InitialContext ctx = new InitialContext();
+ ds = (DataSource) ctx.lookup("java:comp/env/jdbc/onlygetconnectionservlet");
+ utx = (UserTransaction) ctx.lookup("java:comp/UserTransaction");
+ } catch(Exception e) {
+ e.printStackTrace( out );
+ return;
+ }
+
+// out.println("-----Test1----");
+// test1();
+// out.println("--------------");
+// out.println("-----Test1----");
+// test2();
+// out.println("--------------");
+ test2();
+
+ writeFooter();
+ }
+
+ private void test1() {
+ Connection con = null;
+ Statement stmt = null;
+ ResultSet rs = null;
+
+ try {
+ con = ds.getConnection();
+ stmt = con.createStatement();
+ rs = stmt.executeQuery("SELECT * FROM ONLYGETCONNECTION");
+ out.println("test1 :: PASSED");
+ } catch(Exception e) {
+ e.printStackTrace( out );
+ return;
+ } finally {
+ if ( rs != null ) { try { rs.close(); }catch( Exception e) {} }
+ if ( stmt != null ) { try { stmt.close(); }catch( Exception e) {} }
+ if ( con != null ) { try { con.close(); }catch( Exception e) {} }
+ }
+ }
+
+ private void test2() {
+ Connection con = null;
+ Statement stmt = null;
+ ResultSet rs = null;
+
+ try {
+ utx.begin();
+ con = ds.getConnection();
+ try {
+ Thread.sleep( 5000 );
+ } catch(Exception e) {
+ }
+ stmt = con.createStatement();
+ rs = stmt.executeQuery("SELECT * FROM ONLYGETCONNECTION");
+ utx.commit();
+ out.println("test2 :: PASSED");
+ } catch(Exception e) {
+ e.printStackTrace( out );
+ return;
+ } finally {
+ if ( rs != null ) { try { rs.close(); }catch( Exception e) {} }
+ if ( stmt != null ) { try { stmt.close(); }catch( Exception e) {} }
+ if ( con != null ) { try { con.close(); }catch( Exception e) {} }
+ }
+ }
+
+ private void writeHeader() {
+ out.println( "<html>" );
+ out.println( "<head><title>onlygetconnectionservlet results</title></head>");
+ out.println( "<body>");
+ }
+
+ private void writeFooter() {
+ out.println( "</body>");
+ out.println( "</html>");
+ }
+}