1

Confluence スクリプト プラグインを使用して、Confluence で Jython マクロを記述しています。Confluence とプラグインへのアップグレード後、最近動作を停止したコードがいくつかあります。私はここSOとWebで見つかったさまざまな解決策を試しましたが、運がありませんでした。

Oracle データベースに接続していくつかの値をクエリしようとしています。これが私のコードです:

import sys
from oracle.jdbc.driver import OracleDriver
from java.sql import DriverManager, SQLRecoverableException

def connect(user, pw, sid, host, port):
    connection = None
    DriverManager.registerDriver(OracleDriver())

    try:
        connection = DriverManager.getConnection("jdbc:oracle:thin:@"+host+":"+port+":"+sid, user, pw)
    except SQLRecoverableException, e:
        print 'ERROR: Cannot connect to database %s %s %s: %s.' % (host, port, sid, e)
    except:
        print 'ERROR: Cannot connect to database %s %s %s: %s.' % (host, port, sid, sys.exc_info()[1])

    return connection

conn = connect(db_user, db_pw, db_sid, db_host, db_port)

これを実行すると、次のエラーが発生します (注: 実際のホスト名、ポート、および sid は削除されています)。

ERROR: Cannot connect to database host port sid: java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@host:port:sid.

このエラーにより、ojdbc6.jar が見つからないか、正しいディレクトリにないことがわかりました。念のため、明示的にクラスパスに追加しました。これはまだうまくいきませんでした。クラスパスに追加した後、プロセス引数をチェックしてクラスパスが正しく設定されていることを確認したところ、ojdbc6.jar が catalina.out で処理されていることがわかりました。(注: 実際のインストール パスは削除されています)

プロセス引数:

argv[21]: -classpath
argv[22]: :<install_path>/atlassian-confluence-4.3.1/lib/ojdbc6.jar:<install_path>/atlassian-confluence-4.3.1/bin/bootstrap.jar

catalina.out:

*sys-package-mgr*: processing new jar, '<install_path>/atlassian-confluence-4.3.1/lib/ojdbc6.jar'

また、現在 jdk1.6.0_33 を使用していることも確認したので、ojdbc6.jar が適切なシン クライアントであるはずです。エラーの原因を知っている人はいますか?

  • JDK: サン 1.6.0_33-b03
  • ジソン: 2.5.2
  • 合流点: 4.3.1
  • スクリプト プラグイン: 4.1.0
  • OS: SunOS 5.10
  • アプリ サーバー: Apache Tomcat/6.0.32
4

1 に答える 1

0

私もこれを機能させることができませんでした。Oracle チュートリアル (ここ: http://www.oracle.com/technetwork/articles/dsl/mastering-oracle-python-providers-1395759.html ) に従いましたが、Oracle Call Interface (OCI) の使用に切り替えたとき)上記の記事で説明されている方法で、すべてが問題なく機能しました。この記事で概説しているように、OCI を使用すると、接続プーリングなど、いくつかの利点があります。

import sys
import java.sql.SQLException
from oracle.jdbc.pool import OracleDataSource

cs = "jdbc:oracle:thin:@localhost:1521:XE"

ods = OracleDataSource()
ods.setURL(cs)
ods.setUser("hr")
ods.setPassword("hr")
try:
    conn = ods.getConnection()
except java.sql.SQLException, e:
    print "Problem connecting to \"%s\"" % cs
    sys.exit()

stmt = conn.createStatement()
rs = stmt.executeQuery("select * from departments order by 2")

while rs.next():
    print rs.getString(2)

rs.close()
stmt.close()
conn.close()
于 2013-08-24T18:36:13.523 に答える