Skip to content
Yash edited this page Sep 30, 2019 · 1 revision

package com.github.jdbc

Standalone

public class DBConnection {
    public static void main(String[] args) throws SQLException {
        Connection conn = null;
        try {
            conn = DBConnection.getConnection("DEV");
        } finally {
            conn.close();
        }
    }
    
    static Map<String, String> connectionUrls = new HashMap<String, String>();
    static {
        // validationQuery="select 1 from dual", Host, Port, Sid (default=xe), userName, Password
        
        connectionUrls.put("DEV", "HostDEV~1521~xeDEV~xeDEV1~xeDEV777");
        connectionUrls.put("UAT", "HostUAT~1522~xeUAT~xeUAT1~xeUAT777");
    }
    public static Connection getConnection(String envKey) throws SQLException {
        Connection connection = null;
        OracleDriver driverClassName = new oracle.jdbc.driver.OracleDriver();
        try {
            java.sql.DriverManager.registerDriver(driverClassName);
            
            if (connectionUrls.containsKey(envKey)) {
                String uralParams = connectionUrls.get(envKey);
                String[] split = uralParams.split("~");
                
                StringBuffer buffer = new StringBuffer();
                buffer.append("jdbc:oracle:thin:@(DESCRIPTION=(ENABLE=BROKEN)(ADDRESS=(PROTOCOL=tcp)(PORT="+split[1]);
                buffer.append(")(HOST="+split[0]);
                buffer.append("))(CONNECT_DATA=(SID="+split[2]+")))");
                
                String usernName = split[3], password = split[4];
                
                // jdbc:oracle:driver_type:[username/password]@[//]host_name[:port][:ORCL]
                String connectionUrl = buffer.toString();
                System.out.println("DB URL: "+connectionUrl);
                // connection = DriverManager.getConnection("jdbc:default:connection:");
                //connection = DriverManager.getConnection(connectionUrl, usernName, password);
                
                // https://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html
                Properties connectionProps = new Properties();
                connectionProps.put("charset", "UTF8");
                connectionProps.put("lc_ctype", "en_US.UTF-8");
                connectionProps.put("user", usernName);
                connectionProps.put("password", password);
                
                connection = DriverManager.getConnection(connectionUrl, connectionProps);
                System.out.println("Connection : "+ connection);
            }
            return connection;
        } finally {
            DriverManager.deregisterDriver(driverClassName);
        }
    }
}

Server Context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Environment name="contexEnvironmentDataSource" value="jdbc/yashoracle"
        type="java.lang.String" override="false" />
    <Environment name="contexEnvironmentDataSource2" value="jdbc/yashoracle2"
        type="java.lang.String" override="false" />

    <Resource name="jdbc/yashoracle" type="javax.sql.DataSource"
        username="yash" password="yashDB"
url="jdbc:oracle:thin:@(DESCRIPTION=(ENABLE=BROKEN)(ADDRESS=(PROTOCOL=tcp)(PORT=1521)(HOST=localhost))(CONNECT_DATA=(SID=xe)))"
        driverClassName="oracle.jdbc.driver.OracleDriver" maxTotal="20"
        maxIdle="10" maxWaitMillis="5000" minEvictableIdleTimeMillis="300000"
        timeBetweenEvictionRunsMillis="600000" validationInterval="600000"
        validationQuery="select 1 from dual" testOnBorrow="true" auth="Container"
        /> <!-- accessToUnderlyingConnectionAllowed="true" -->
</Context>
private static final String JNDI_SUBCONTEXT = "java:comp/env/";
public Connection getDataSourceConnection() {
    Connection connection = null;
    try {
        InitialContext initialContext = new InitialContext();
        String datasourceName = (String) initialContext.lookup(JNDI_SUBCONTEXT + "/contexEnvironmentDataSource");
        javax.sql.DataSource dataSource = (DataSource) initialContext.lookup(JNDI_SUBCONTEXT + "/" + datasourceName);
        connection = dataSource.getConnection();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return connection;
}
Clone this wiki locally