Tuesday, July 29, 2014

Websphere Datasource Tracing

Disable & Enabling tracing using properties file
#  Click => Here  <= for details
# -Ddb2.jcc.propertiesFile=C:/jcc.properties
db2.jcc.traceFile=C:/EMD/jcc.log
db2.jcc.traceOption=1
db2.jcc.traceLevel=3
db2.jcc.traceFileSize=20971520
db2.jcc.traceFileCount=4
db2.jcc.traceFileAppend=true

Using JDBC URL:
jdbc:db2://localhost:50000/sample:traceDirectory=/tmp;traceFile=jcctrace.log;traceFileCount=5;traceFileSize=20971520;traceLevel=-1;

XML Encoder and Decoder

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;

public class OXMUtil {
    public static void main(String args[]) {
        ArrayList testArrayList = new ArrayList();
        testArrayList.add(new String("Test"));
        testArrayList.add(new String("Test1"));
        String testString = objectToXML(testArrayList);
        System.out.println("XML String .....");
        System.out.println(testString);
        ArrayList finalArrayList = (ArrayList) XMLToObject(new String(
                testString));
        System.out.println("Actual Object.....");
        for (int i = 0; i < finalArrayList.size(); i++)
            System.out.println(finalArrayList.get(i).toString());
    }
    public static String objectToXML(Object voObj) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        XMLEncoder xmlEncoder = null;
        try {
            xmlEncoder = new XMLEncoder(new BufferedOutputStream(stream));
            xmlEncoder.writeObject(voObj);
            xmlEncoder.close();
            return stream.toString("UTF-8");
        } catch (Exception e) {
            System.out.println("Error while Converting from object to XML : "
                    + e.getMessage());
            xmlEncoder.close();
        }
        return null;
    }
    public static Object XMLToObject(String dataXML) {
        XMLDecoder xMLDecoder = null;
        try {
            xMLDecoder = new XMLDecoder(new ByteArrayInputStream(
                    dataXML.getBytes("UTF-8")));
            Object voObj = xMLDecoder.readObject();
            xMLDecoder.close();
            return voObj;
        } catch (Exception e) {
            System.out.println("Error while Converting XML to Object : "
                    + e.getMessage());
            xMLDecoder.close();
        }
        return null;
    }
}

Wednesday, April 30, 2014

Spring JDBC Logging

# Root logger option
log4j.rootLogger=DEBUG, file, stdout

# Daily rolling file appender
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=logs/jdbc.log
log4j.appender.file.Append=true
log4j.appender.file.DatePattern='.'dd-MM-yyyy
log4j.appender.file.encoding=UTF-8
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss} %-5p %c{1}:%L - %m%n
#log4j.appender.file.layout.ConversionPattern=%p %t %c - %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L -  %m%n`
#log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
#log4j.appender.stdout.layout.ConversionPattern=%p %t %c - %m%n

# Spring JDBC logging
log4j.logger.org.springframework.jdbc=DEBUG
log4j.logger.org.springframework.jdbc.core.JdbcTemplate=DEBUG, file
log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=TRACE, file

# Spring Transaction logging
log4j.logger.org.springframework.transaction=INFO
log4j.logger.org.springframework.transaction.interceptor=TRACE
#log4j.logger.org.springframework.jdbc.datasource.DataSourceTransactionManager=DEBUG
#log4j.logger.org.springframework.orm.jpa=INFO

# Hibernate Transaction logging
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.engine.transaction=DEBUG
log4j.logger.org.springframework.orm.hibernate3.HibernateTransactionManager=DEBUG

# BoneCP Connection Pooling logging
#log4j.category.com.jolbox=DEBUG,stdout


-------------------------------------------------------------------------------
Note:
Spring JDBCTemplate is using common-logging API to log.
And if you are using log4j in your application, you will have to add
common logging bridge for the same. Add following in your pom.xml
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-jcl</artifactId>
    <version>2.0-rc1</version>
</dependency>
-------------------------------------------------------------------------------

Note: Logging Spring in IBM Websphere click -------------------------------------------------------------------------------

Thursday, April 17, 2014

ResultSet PrintColumns

package com.jini.jdbc;

import java.sql.*;
public class PrintColumns {
    public static void main(String args[]) {
        String url = "jdbc:mysql://localhost/test";
        Connection con;
        String query = "select * from STUDENT";
        Statement stmt;
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (java.lang.ClassNotFoundException e) {
            System.err.print("ClassNotFoundException: ");
            System.err.println(e.getMessage());
        }
        try {
            con = DriverManager.getConnection(url, "root", "123");
            stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            ResultSetMetaData rsmd = rs.getMetaData();

            PrintColumnTypes.printColTypes(rsmd);
            System.out.println("");

            int numberOfColumns = rsmd.getColumnCount();

            for (int i = 1; i <= numberOfColumns; i++) {
                if (i > 1)
                    System.out.print(",  ");
                String columnName = rsmd.getColumnName(i);
                System.out.print(columnName);
            }
            System.out.println("");

            while (rs.next()) {
                for (int i = 1; i <= numberOfColumns; i++) {
                    if (i > 1)
                        System.out.print(",  ");
                    String columnValue = rs.getString(i);
                    System.out.print(columnValue);
                }
                System.out.println("");
            }

            stmt.close();
            con.close();
        } catch (SQLException ex) {
            System.err.print("SQLException: ");
            System.err.println(ex.getMessage());
        }
    }
} // end of class

class PrintColumnTypes {
    public static void printColTypes(ResultSetMetaData rsmd)
            throws SQLException {
        int columns = rsmd.getColumnCount();
        for (int i = 1; i <= columns; i++) {
            int jdbcType = rsmd.getColumnType(i);
            String name = rsmd.getColumnTypeName(i);
            System.out.print("Column " + i + " is JDBC type " + jdbcType);
            System.out.println(", which the DBMS calls " + name);
        }
    }
} // end of class

Enabling Profiling

-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=syntw.synt.com --------------------------------------------------
set JAVA_OPTS=%JAVA_OPTS%
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
--------------------------------------------------
Websphere Profiling Using Visual VM
@ Admin Console
@ Servers->Server types->WebSphere application servers->server1->Process definition->Java Virtual Machine

@ Add the following line into the field of Generic JVM Argument :
-Djavax.management.builder.initial=
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=syntw.synt.com
-Dcom.sun.management.jmxremote.local.only=false
@ Test using netstat –a
@ Connect VisualVM !
@ Alternatively you can set the properties in the management.properties file located in the installation directory of the WebSphere application server\AppServer\java\jre\lib\magagement 
 --------------------------------------------------
Analyzing Java Memory

Spring with Log4j Initialization

import org.apache.log4j.BasicConfigurator;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class zzZZMain {
    private static ApplicationContext context = null;
    static {
        BasicConfigurator.configure();
        context = new ClassPathXmlApplicationContext("classpath*:com/jini/TESTING/application*.xml");
        }
    public static Object getBean(String beanName) {
        return context.getBean(beanName);
    }
    public static void main(String[] args) throws Exception {
        System.out.println("--------- SpRiNg and lOg4j iNiTiaLiZaTion successfull --------");
    } // end of main()
} // end of class