Module: Spider::Model::Storage::Db::Connectors::JDBCOracle::ClassMethods

Defined in:
lib/spiderfw/model/storage/db/connectors/jdbc_oracle.rb

Instance Method Summary collapse

Instance Method Details

#connection_alive?(conn) ⇒ Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/spiderfw/model/storage/db/connectors/jdbc_oracle.rb', line 58

def connection_alive?(conn)
    conn.pingDatabase()
end

#new_connection(user, pass, dbname, role) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/spiderfw/model/storage/db/connectors/jdbc_oracle.rb', line 33

def new_connection(user, pass, dbname, role)
    driver = Connectors::JDBC.driver_class('oracle.jdbc.driver.OracleDriver')
    host = nil; port = nil; sid = nil
    if dbname =~ /(.+)(?::(\d+))?\/(.+)/
        host = $1
        port = $2
        sid = $3
    else
        raise ArgumentError, "Oracle db name must be in the host:port/SID form"
    end
    port ||= 1521
    url = "jdbc:oracle:thin:@#{host}:#{port}:#{sid}"
    conn = begin
        Jdbc::DriverManager.getConnection(url, user, pass)
    rescue => exc
        # bypass DriverManager to get around problem with dynamically loaded jdbc drivers
        props = java.util.Properties.new
        props.setProperty("user", user)
        props.setProperty("password", pass)
        driver.new.connect(url, props)
    end
    conn.setAutoCommit(true)
    return conn
end