Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.gmail.hancury.tablemaker.util
- import java.sql.{Connection, DriverManager}
- import com.jcraft.jsch.{JSch, Session}
- import org.apache.log4j.Logger
- class Database(driver: String) {
- Class.forName(driver).newInstance()
- }
- object DBUtil {
- val logger = Logger.getLogger(this.getClass)
- def sshTunnelling(sshUser: String, sshPassword: String, sshHost: String,
- dbHost: String, dbPort: Int, localPort: Int): Maybe[Session] = {
- try {
- val jsch = new JSch()
- val session = jsch.getSession(sshUser, sshHost)
- session.setPassword(sshPassword)
- session.setConfig("StrictHostKeyChecking", "no")
- session.connect()
- session.setPortForwardingL(localPort, dbHost, dbPort)
- logger.info("port forwarded = %s:%d -> %s:%d".format(sshHost, localPort, dbHost, dbPort))
- Maybe(session)
- } catch {
- case e: Exception => Failure(e.getMessage, e.getStackTrace)
- }
- }
- def getConnection(dbUser: String, dbPassword: String, dbHost: String, dbPort: Int, db: Database): Maybe[Connection] = {
- var conn: Connection = null
- try {
- val url = "jdbc:mysql://%s:%d/bom?serverTimezone=Asia/Seoul".format(dbHost, dbPort)
- logger.info(url)
- conn = DriverManager.getConnection(url, dbUser, dbPassword)
- Success(conn)
- } catch {
- case e: Exception =>
- if (conn != null) conn.close()
- Failure(e.getMessage, e.getStackTrace)
- }
- }
- def disconnect(safeDbConn: Maybe[Connection]): Unit = {
- safeDbConn.map(_.close()).write
- }
- def disconnect(safeDbConn: Maybe[Connection], sshSession: Maybe[Session]): Unit = {
- safeDbConn.map(_.close()).write
- sshSession.map(_.disconnect()).write
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement