{"id":398,"date":"2013-12-05T07:05:47","date_gmt":"2013-12-05T07:05:47","guid":{"rendered":"http:\/\/codethataint.com\/blog\/?p=398"},"modified":"2013-12-05T08:51:39","modified_gmt":"2013-12-05T08:51:39","slug":"using-singleton-class-for-db-connection-java","status":"publish","type":"post","link":"https:\/\/codethataint.com\/blog\/using-singleton-class-for-db-connection-java\/","title":{"rendered":"Using Singleton Class for DB Connection Java"},"content":{"rendered":"<p>The Servlet which loads the Singleton class should be loaded during the server startup<\/p>\n<p><strong>ConfigServlet.java<\/strong> <\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class ConfigServlet extends HttpServlet\r\n{\t\r\n\t@Override\r\n\tpublic void init() throws ServletException\r\n\t{\r\n\t  super.init();\r\n\t  SingletonDBConnection.getInstance();\r\n\t}\r\n}\r\n<\/pre>\n<p><strong>web.xml<\/strong><\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n&lt;servlet&gt;\r\n   &lt;servlet-name&gt;StartUpServlet&lt;\/servlet-name&gt;\r\n   &lt;servlet-class&gt;com.mugil.tutor.ConfigServlet&lt;\/servlet-class&gt;\r\n   &lt;load-on-startup&gt;1&lt;\/load-on-startup&gt;\r\n&lt;\/servlet&gt;\r\n<\/pre>\n<p><strong>DBConnection.java<\/strong><\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class DBConnection\r\n{\r\n\tpublic Connection getDBConnection()\r\n\t{\r\n\t\tConnection connection = null;\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tconnection = DriverManager.getConnection(\r\n\t\t\t\t\t&quot;HOST_NAME&quot;, &quot;USER_NAME&quot;, &quot;PASSWORD&quot;);\r\n\r\n\t\t}\r\n\t\tcatch (SQLException e)\r\n\t\t{\r\n\t\t\te.getLocalizedMessage();\t\r\n\t\t\tSystem.out.println(&quot;Connection Failed! Check output console&quot;);\r\n\t\t\te.printStackTrace();\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn connection;\r\n\t}\r\n}\r\n\r\n<\/pre>\n<p><strong>SingletonDBConnection.java<\/strong><\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport java.sql.Connection;\r\nimport java.sql.SQLException;\r\n\r\nimport javax.naming.Context;\r\nimport javax.naming.InitialContext;\r\nimport javax.naming.NamingException;\r\nimport javax.sql.DataSource;\r\n\r\npublic class SingletonDBConnection\r\n{\r\n\tprivate static SingletonDBConnection singleInstance;\r\n\tprivate static DataSource dataSource;\r\n\tprivate static Connection dbConnect;\r\n\t\r\n\tprivate SingletonDBConnection()\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tContext initContext = new InitialContext();\r\n\t\t\tContext envContext  = (Context) initContext.lookup(&quot;java:\/comp\/env&quot;);\r\n\t\t\tdataSource\t\t   = (DataSource) envContext.lookup(&quot;jdbc\/testdb&quot;);\r\n\t\t\t\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tdbConnect  = dataSource.getConnection();\r\n\t\t\t}\r\n\t\t\tcatch (SQLException e)\r\n\t\t\t{\r\n\t\t\t\te.printStackTrace();\r\n\t\t\t} \t\r\n\t\t}\r\n\t\tcatch (NamingException e)\r\n\t\t{\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic static SingletonDBConnection getInstance()\r\n\t{\r\n\t\tif(singleInstance == null)\r\n\t\t{\r\n\t\t\tsynchronized (SingletonDBConnection.class)\r\n\t\t\t{\r\n\t\t\t\tif(singleInstance == null)\r\n\t\t\t\t{\r\n\t\t\t\t\tsingleInstance = new SingletonDBConnection();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn singleInstance;\r\n\t}\r\n\t\r\n\tpublic static Connection getConnInst()\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tdbConnect = dataSource.getConnection();\r\n\t\t}\r\n\t\tcatch (SQLException e1)\r\n\t\t{\r\n\t\t\te1.printStackTrace();\r\n\t\t}\r\n\t\t\r\n\t\tif(dbConnect == null)\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tContext initContext = new InitialContext();\r\n\t\t\t\tContext envContext  = (Context) initContext.lookup(&quot;java:\/comp\/env&quot;);\r\n\t\t\t\tdataSource\t\t    = (DataSource) envContext.lookup(&quot;jdbc\/testdb&quot;);\r\n\t\t\t\t\r\n\t\t\t\ttry\r\n\t\t\t\t{\r\n\t\t\t\t\tdbConnect  = dataSource.getConnection();\r\n\t\t\t\t}\r\n\t\t\t\tcatch (SQLException e)\r\n\t\t\t\t{\r\n\t\t\t\t\te.printStackTrace();\r\n\t\t\t\t} \t\r\n\t\t\t}\r\n\t\t\tcatch (NamingException e)\r\n\t\t\t{\r\n\t\t\t\te.printStackTrace();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn dbConnect;\t\t \r\n\t}\r\n}\r\n<\/pre>\n<p><strong>ListUsers.java<\/strong><\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic List&lt;User&gt; getUsersList()\r\n\t{\r\n\t\tConnection conn;\r\n\t\tStatement  stmt = null;\r\n\t\tResultSet  rs;\r\n\t\tList&lt;User&gt; arrUsersList = new ArrayList&lt;User&gt;();\r\n\t\tconn = SingletonDBConnection.getInstance().getConnInst();\r\n\t\t\r\n\t\tString strSQL = &quot;SELECT UserId, UserName, Gender, UserLocation &quot; +\r\n\t\t\t\t\t\t&quot;  FROM tblusers&quot;;\r\n\t\t\r\n\t\ttry\r\n\t\t{\r\n\t\t\tstmt = conn.createStatement();\t\t\t\r\n\t\t\trs = stmt.executeQuery(strSQL);\r\n\t\t\t\r\n\t\t\twhile(rs.next())\r\n\t\t\t{\r\n\t\t\t\tUser objUser = new User();\r\n\t\t\t\tobjUser.setUserId(rs.getString(&quot;UserId&quot;));\r\n\t\t\t\tobjUser.setUserName(rs.getString(&quot;UserName&quot;));\r\n\t\t\t\tobjUser.setUserGender(rs.getString(&quot;Gender&quot;));\r\n\t\t\t\tobjUser.setUserLocation(rs.getString(&quot;UserLocation&quot;));\r\n\t\t\t\tarrUsersList.add(objUser);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (SQLException e)\r\n\t\t{\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t\tfinally\r\n\t\t{\r\n\t\t\tif(conn != null) try { conn.close(); } catch (SQLException e) { e.printStackTrace(); }\r\n\t\t}\r\n\t\t\r\n\t\t\r\n\t\treturn arrUsersList;\r\n\t}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>The Servlet which loads the Singleton class should be loaded during the server startup ConfigServlet.java public class ConfigServlet extends HttpServlet { @Override public void init() throws ServletException { super.init(); SingletonDBConnection.getInstance(); } } web.xml &lt;servlet&gt; &lt;servlet-name&gt;StartUpServlet&lt;\/servlet-name&gt; &lt;servlet-class&gt;com.mugil.tutor.ConfigServlet&lt;\/servlet-class&gt; &lt;load-on-startup&gt;1&lt;\/load-on-startup&gt; &lt;\/servlet&gt; DBConnection.java public class DBConnection { public Connection getDBConnection() { Connection connection = null; try { connection =&hellip; <a href=\"https:\/\/codethataint.com\/blog\/using-singleton-class-for-db-connection-java\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[64],"tags":[],"class_list":["post-398","post","type-post","status-publish","format-standard","hentry","category-design-patterns"],"_links":{"self":[{"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/posts\/398","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/comments?post=398"}],"version-history":[{"count":10,"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/posts\/398\/revisions"}],"predecessor-version":[{"id":402,"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/posts\/398\/revisions\/402"}],"wp:attachment":[{"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/media?parent=398"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/categories?post=398"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/tags?post=398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}