config[:connection_alive_sql] ||= "select 1"
# sonar
- # ActiveRecord must transfer the responsibility of connection pool to the Sonar,
- # even if JNDI datasource is not used.
+ # The connection pool is managed by Sonar (commons-dbcp) but not by ActiveRecord
@jndi_connection = true
- # /sonar
@connection = nil
- if config[:jndi]
- begin
- configure_jndi
- rescue => e
- warn "JNDI data source unavailable: #{e.message}; trying straight JDBC"
- configure_jdbc
- end
- else
- configure_jdbc
- end
- end
-
- def configure_jndi
- jndi = config[:jndi].to_s
- ctx = javax.naming.InitialContext.new
- ds = ctx.lookup(jndi)
- @connection_factory = JdbcConnectionFactory.impl do
- ds.connection
- end
- unless config[:driver]
- config[:driver] = connection.meta_data.connection.java_class.name
- end
- @jndi_connection = true
+ configure_jdbc
+ # /sonar
end
def configure_url
end
#sonar
- # modified method to support JNDI connections
+ # Commons DBCP is used to manage pool of JDBC connections.
def new_connection(config)
@raw_connection = ::Java::OrgSonarServerUi::JRubyFacade.getInstance().getConnection()
+
if @raw_connection.respond_to?(:getInnermostDelegate)
@pooled_connection = @raw_connection
- @raw_connection = @raw_connection.innermost_delegate
- elsif @raw_connection.respond_to?(:getUnderlyingConnection)
- @pooled_connection = @raw_connection
- @raw_connection = @raw_connection.underlying_connection
+ @raw_connection = @raw_connection.getInnermostDelegate()
else
- raise ArgumentError, "JDBC Datasource not supported. Please use Commons DBCP or Tomcat Connection Pool"
+ raise ArgumentError, "This JDBC connection is not managed by Commons DBCP"
end
username = @raw_connection.meta_data.user_name