Step 1: Download commons-io.jar, commons-lang-2.6.jar and log4j-1.2.15.jar.
Step2: Put jar files in WEB-INF/lib.
Step3: Create a web application with servlet.
Step 4. Complete Servlet Code for reference:
log4j.xml : (for JBoss -- uncomment "<!--<param name="File" value="${jboss.server.log.dir}/loggers.log"/>-->" and comment "<param name="File" value="../logs/loggers.log" />")
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="abc-date-rollout" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="../logs/loggers.log" />
<!--<param name="File" value="${jboss.server.log.dir}/loggers.log"/>-->
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss,SSS} %-5p: %c - %m%n"/>
</layout>
</appender>
<appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="500"/>
<appender-ref ref="abc-date-rollout"/>
</appender>
<root>
<priority value="INFO"/>
<appender-ref ref="abc-date-rollout" />
</root>
</log4j:configuration>
Complete web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>DBConnServlet</display-name>
<context-param>
<param-name>log4j-properties-location</param-name>
<param-value>WEB-INF/classes/log4j.xml</param-value>
</context-param>
<resource-ref>
<description>COS Database Connection</description>
<res-ref-name>jdbc/DSName</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
<mapped-name>jdbc/DSName</mapped-name>
</resource-ref>
<listener>
<listener-class>com.test.listener.AppContextListener</listener-class>
</listener>
<servlet>
<description>Proxy servlet for all Technical workflows</description>
<display-name>DBConnServlet</display-name>
<servlet-name>DBConnServlet</servlet-name>
<servlet-class>com.test.servlet.DBConnServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DBConnServlet</servlet-name>
<url-pattern>/Connection/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>1440</session-timeout>
</session-config>
</web-app>
Listener Class
package com.test.listener;
import java.io.File;
import java.util.Date;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
public class AppContextListener implements ServletContextListener {
/**
* @see ServletContextListener#contextInitialized(ServletContextEvent)
*/
public void contextInitialized(ServletContextEvent objServletContextEvent) {
final ServletContext servletContext = objServletContextEvent.getServletContext();
// Logger initialization starts
Logger log = null;
System.out.println("AppContextListener is initializing log4j");
String log4jLocation = servletContext.getInitParameter("log4j-properties-location");
if (log4jLocation == null) {
System.err
.println("*** No log4j-properties-location init param, so initializing log4j with BasicConfigurator");
BasicConfigurator.configure();
} else {
String webAppPath = servletContext.getRealPath("/");
String log4jProp = webAppPath + log4jLocation;
File log4j = new File(log4jProp);
if (log4j.exists()) {
System.out.println("Initializing log4j with: " + log4jProp);
DOMConfigurator.configure(log4jProp);
} else {
System.err
.println("*** " + log4jProp + " file not found, so initializing log4j with BasicConfigurator");
BasicConfigurator.configure();
}
}
//Get logger to log events
log = Logger.getLogger(AppContextListener.class.getName());
// Logger initialization Ends
log.info("contextInitialized(): ServletContextListener started : " + new Date());
}
/**
* @see ServletContextListener#contextDestroyed(ServletContextEvent)
*/
public void contextDestroyed(ServletContextEvent objServletContextEvent) {
Logger log = Logger.getLogger(AppContextListener.class.getName());
// get our timer from the Context
log.info("run(): ServletContextListener destroyed : ");
}
}
Complete context.xml:
<?xml version='1.0' encoding='utf-8'?>
<Context path="/DBConnApp/Connection" docBase="DBTest"
debug="5" reloadable="true" crossContext="true" sessionCookiePathUsesTrailingSlash='false'>
<Resource
name="jdbc/DSName"
auth="Container"
type="javax.sql.DataSource"
removeAbandoned="true" removeAbandonedTimeout="30" maxActive="100" maxIdle="30" maxWait="10000"
username="aj83793" password="Mahavir9" testOnBorrow="true" validationQuery="select 1"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://10.173.56.215:1433;DatabaseName=CobaltDEV"/>
</Context>
Complete jboss-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<class-loading java2ClassLoadingCompliance="false">
<loader-repository>
org.myapp:loader=MyClassLoader
<loader-repository-config>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
</class-loading>
<resource-ref>
<res-ref-name>java:jdbc/DSName</res-ref-name>
<jndi-name>java:jdbc/DSName</jndi-name>
<res-type>javax.sql.DataSource</res-type>
</resource-ref>
</jboss-web>
Step2: Put jar files in WEB-INF/lib.
Step3: Create a web application with servlet.
Step 4. Complete Servlet Code for reference:
log4j.xml : (for JBoss -- uncomment "<!--<param name="File" value="${jboss.server.log.dir}/loggers.log"/>-->" and comment "<param name="File" value="../logs/loggers.log" />")
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="abc-date-rollout" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="../logs/loggers.log" />
<!--<param name="File" value="${jboss.server.log.dir}/loggers.log"/>-->
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss,SSS} %-5p: %c - %m%n"/>
</layout>
</appender>
<appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="500"/>
<appender-ref ref="abc-date-rollout"/>
</appender>
<root>
<priority value="INFO"/>
<appender-ref ref="abc-date-rollout" />
</root>
</log4j:configuration>
Complete web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>DBConnServlet</display-name>
<context-param>
<param-name>log4j-properties-location</param-name>
<param-value>WEB-INF/classes/log4j.xml</param-value>
</context-param>
<resource-ref>
<description>COS Database Connection</description>
<res-ref-name>jdbc/DSName</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
<mapped-name>jdbc/DSName</mapped-name>
</resource-ref>
<listener>
<listener-class>com.test.listener.AppContextListener</listener-class>
</listener>
<servlet>
<description>Proxy servlet for all Technical workflows</description>
<display-name>DBConnServlet</display-name>
<servlet-name>DBConnServlet</servlet-name>
<servlet-class>com.test.servlet.DBConnServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DBConnServlet</servlet-name>
<url-pattern>/Connection/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>1440</session-timeout>
</session-config>
</web-app>
Listener Class
package com.test.listener;
import java.io.File;
import java.util.Date;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
public class AppContextListener implements ServletContextListener {
/**
* @see ServletContextListener#contextInitialized(ServletContextEvent)
*/
public void contextInitialized(ServletContextEvent objServletContextEvent) {
final ServletContext servletContext = objServletContextEvent.getServletContext();
// Logger initialization starts
Logger log = null;
System.out.println("AppContextListener is initializing log4j");
String log4jLocation = servletContext.getInitParameter("log4j-properties-location");
if (log4jLocation == null) {
System.err
.println("*** No log4j-properties-location init param, so initializing log4j with BasicConfigurator");
BasicConfigurator.configure();
} else {
String webAppPath = servletContext.getRealPath("/");
String log4jProp = webAppPath + log4jLocation;
File log4j = new File(log4jProp);
if (log4j.exists()) {
System.out.println("Initializing log4j with: " + log4jProp);
DOMConfigurator.configure(log4jProp);
} else {
System.err
.println("*** " + log4jProp + " file not found, so initializing log4j with BasicConfigurator");
BasicConfigurator.configure();
}
}
//Get logger to log events
log = Logger.getLogger(AppContextListener.class.getName());
// Logger initialization Ends
log.info("contextInitialized(): ServletContextListener started : " + new Date());
}
/**
* @see ServletContextListener#contextDestroyed(ServletContextEvent)
*/
public void contextDestroyed(ServletContextEvent objServletContextEvent) {
Logger log = Logger.getLogger(AppContextListener.class.getName());
// get our timer from the Context
log.info("run(): ServletContextListener destroyed : ");
}
}
Servlet Class for Connection:
package com.test.servlet;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import org.apache.log4j.Logger;
/**
* Servlet implementation class DBConnectionServlet
*/
public class DBConnServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
static Logger log = Logger.getLogger(DBConnServlet.class.getName());
/*
* (non-Javadoc)
*
* @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig)
*/
public void init(ServletConfig config) {
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
con = getConnection();
// Execute SQL query
stmt = con.createStatement();
String sql;
sql = "SELECT FirstName, LastName FROM [Config].[UserMaster]";
rs = stmt.executeQuery(sql);
while (rs.next()) {
// Retrieve by column name
String first = rs.getString("FirstName");
String last = rs.getString("LastName");
System.out.println("Name : " + first + " " + last);
}
rs.close();
stmt.close();
con.close();
} catch (Exception e){
try{
rs.close();
stmt.close();
con.close();
}catch(SQLException sqle){
}
}
}
/**
* Get connection from data source.
* @return
* @throws SQLException
*/
public Connection getConnection() throws SQLException {
Connection conDB = null;
try {
// sqljdbc4.jar - support JDBC 4.0, it works only JRE 6.0 or later
// Get value from web.xml
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource sqlDS = (DataSource) envCtx.lookup("jdbc/DSName");
conDB = sqlDS.getConnection();
} catch (Exception e) {
System.out.println(" ***** DbConnection.GetConnection ERROR ***** " + e);
}
return conDB;
}
}
<?xml version='1.0' encoding='utf-8'?>
<Context path="/DBConnApp/Connection" docBase="DBTest"
debug="5" reloadable="true" crossContext="true" sessionCookiePathUsesTrailingSlash='false'>
<Resource
name="jdbc/DSName"
auth="Container"
type="javax.sql.DataSource"
removeAbandoned="true" removeAbandonedTimeout="30" maxActive="100" maxIdle="30" maxWait="10000"
username="aj83793" password="Mahavir9" testOnBorrow="true" validationQuery="select 1"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://10.173.56.215:1433;DatabaseName=CobaltDEV"/>
</Context>
Complete jboss-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<class-loading java2ClassLoadingCompliance="false">
<loader-repository>
org.myapp:loader=MyClassLoader
<loader-repository-config>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
</class-loading>
<resource-ref>
<res-ref-name>java:jdbc/DSName</res-ref-name>
<jndi-name>java:jdbc/DSName</jndi-name>
<res-type>javax.sql.DataSource</res-type>
</resource-ref>
</jboss-web>
No comments:
Post a Comment