3
votes

I am trying to establish a jdbc-oci connection to an oracle database on a coldfusion v 10 std server.

The reason for employing jdbc oci is the necessity to encrypt data flowing between the app server and the database (by using common settings in sqlnet.ora). However, no matter what syntax we try, neither a service based nor a tnsnames based jdbc url will work. Immediately after saving (and automatically testing) the connection, coldfusion errors out with "java.sql.SQLException: Timed out trying to establish connection".

It looks weird that a timeout may have happened since the error will always be thrown immediately. Therefor I suppose there is another root cause for failing to establish the connection.

Any ideas out there?

Please note that we simulated connection establishment with a console application aside coldfusion but using the same jvm and jdbc driver successfully. it does therefore not seem to be a jvm or driver or oci.dll related issue.

  • data source settings :

    • Driver Class : oracle.jdbc.driver.OracleDriver
    • JDBC URL (using tnsnames.ora) : jdbc:oracle:oci:@<theName>
    • JDBC URL (using ip, port, service) : jdbc:oracle:oci:@//<IP>:1521/<SID>
  • error message :

    • Connection verification failed for data source: theName
      java.sql.SQLException: Timed out trying to establish connection
      The root cause was that: java.sql.SQLException: Timed out trying to establish connection
  • environment :

    • ojdbc6 driver lives in a directory known to coldfusion
    • oci.dll lives in a directory known to the system path variable, verified by sysinternals processexplorer on the coldfusion service
    • for the JDBC URL (using tnsnames.ora), the directory containing tnsnames.ora is known as a system variable TNS_ADMIN, verified by sysinternals processexplorer on the coldfusion service
    • along with tnsnames.ora there is a sqlnet.ora file comprising settings to switch on data encryption

Stacktrace:

A non-SQL error occurred while requesting a connection from "datasource-name here". Timed out trying to establish connection

Exception in thread "Thread-2120" java.lang.UnsatisfiedLinkError: no ocijdbc11 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at oracle.jdbc.driver.T2CConnection$1.run(T2CConnection.java:3560)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.jdbc.driver.T2CConnection.loadNativeLibrary(T2CConnection.java:3556)
    at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:269)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:553)
    at oracle.jdbc.driver.T2CConnection.<init>(T2CConnection.java:165)
    at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:53)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528)
    at coldfusion.server.j2ee.sql.pool.JDBCPool.createPhysicalConnection(JDBCPool.java:614)
    at coldfusion.server.j2ee.sql.pool.ConnectionRunner$RunnableConnection.run(ConnectionRunner.java:67)
    at java.lang.Thread.run(Thread.java:722)
A non-SQL error occurred while requesting a connection from "datasource-name here".
Timed out trying to establish connection
[Fatal Error] :2662:4: The element type "view" must be terminated by the matching end-tag "</view>".
1
Could you post the entire stacktrace of the SQLException?Mark Rotteveel
Please edit your post and the stacktrace there, don't use comments for that.Mark Rotteveel

1 Answers

0
votes

Adding of the Path to the oracle instant client at the configuration file cf-directory\cfusion\bin\jvm.config has solved the problem.