カスタムタグやネイティブドライバ経由の接続で呼び出し先が見つからない場合の参考情報

ColdFusionからJava以外のプログラム(例えばカスタムタグを経由してOSにインストールされているライブラリに接続するものや、ネイティブドライバを経由したDB接続(例えば、Oracleクライアントを介した Type 2 (OCI) 接続)を行おうとした際に、接続先のライブラリやドライバが見つからないエラーが発生する場合があります。

エラー例①
"Error","http-bio-8500-exec-1","05/12/15","17:39:39",,"com/○○○○/×××/△△△△/ConnectorException インクルードまたは処理されたファイルの特定のシーケンス :C:\ColdFusion11\cfusion\wwwroot\sample1.cfm, line: 30 "
java.lang.NoClassDefFoundError: com/○○○○/×××/△△△△/ConnectorException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at coldfusion.tagext.CfxTag.doStartTag(CfxTag.java:88)
at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2991)
at cfsample12ecfm1071544931.runPage(C:\ColdFusion11\cfusion\wwwroot\sample1.cfm:30)
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246)
...

エラー例②
"Error","http-bio-8500-exec-7","05/12/15","13:48:55",,"No suitable driver found for client:jdbc:oracle:oci:@127.0.0.1:1521/XE"
java.sql.SQLException: No suitable driver found for client:jdbc:oracle:oci:@127.0.0.1:1521/XE
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at coldfusion.server.j2ee.sql.pool.JDBCPool.createPhysicalConnection(JDBCPool.java:619)
at coldfusion.server.j2ee.sql.pool.ConnectionRunner$RunnableConnection.run(ConnectionRunner.java:67)
at java.lang.Thread.run(Unknown Source)

 

(必ずしも同じ理由で発生しているとは限りませんが)ColdFusion内部のJava VMからOSのネイティブファイルへアクセスする事ができない場合、起動スクリプト内の java.library.pathにそれらが置かれているパスを追記する事で、エラーが解消できる場合があります。

[cf_root]/cfusion/bin/ フォルダ内にある jvm.config ファイル(念のため、作業の前にこのファイルのバックアップを取っておきましょう)をメモ帳やテキストエディタで開き、java.library.pathの項目に設定を追加します。

例えば、Oracle Type2 接続(OCI)の場合は
# Comma separated list of shared library path
java.library.path={application.home}/lib,{application.home}/jintegra/bin,{application.home}/jintegra/bin/international,{application.home}/lib/oosdk/classes/win

# Comma separated list of shared library path
java.library.path={application.home}/lib,{application.home}/jintegra/bin,{application.home}/jintegra/bin/international,{application.home}/lib/oosdk/classes/win,C:/instantclient_12_1
 

設定後は ColdFusion サービスを再起動して下さい。

※状況によっては、もちろん違う原因によるエラーが出る場合もあります。エラーメッセージ内容から接続先の設定やそちらで出力されるログ、またColdFusion内に設置した.jarファイル等の不足やバージョン等を確認下さい。

エラー例③:

Exception in thread "Thread-48" java.lang.UnsatisfiedLinkError: C:\instantclient_12_1\ocijdbc12.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(Unknown Source)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at oracle.jdbc.driver.T2CConnection$1.run(T2CConnection.java:4123)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.jdbc.driver.T2CConnection.loadNativeLibrary(T2CConnection.java:4119)
    at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:312)
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666)
    at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:54)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566)
    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(Unknown Source)
ORACLE_OCI からの connection を要求する際に、SQL 以外のエラーが発生しました。
接続を確立しようとしてタイムアウトになりました

上記は 64bit版 ColdFusion から 32bit版の Oracle Clientライブラリファイルにアクセスしたために発生しました。対応としては「① ColdFusionを 32bit版に変えてインストールする」か「②Oracle Clientライブラリファイルを 64bit版に変える」ことでエラーを解消しています。

 

 


 


記事公開日:2015年06月02日
最終更新日:2015年06月02日


 


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.