14

以下を使用してJNDI経由でデータソースをロードしています:

JDK 1.6.0_31 Tomcat 6.0.30

Eclipse(Indigo SR 2)デバッガーを起動すると、次のように動作します。

Daemon System Thread [Finalizer] (Suspended (exception NullPointerException))   
    JdbcOdbcDriver.finalize() line: 96  
    Finalizer.invokeFinalizeMethod(Object) line: not available [native method]  
    Finalizer.runFinalizer() line: 83   
    Finalizer.access$100(Finalizer) line: 14    
    Finalizer$FinalizerThread.run() line: 160   

私はこれを引き起こしているものについて本当に途方に暮れています。さらに、それは私の実行にまったく影響を与えていないようです。私のデータソースは初期化され、通常どおりに使用され、期待するすべての結果が得られます。私が読んだことから、これはOracleドライバーの問題に関連している可能性がありますか?

myApp \ META-INF \ context.xml

<Resource name="jdbc/conn" auth="Container"
    type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver"
    url="@url@" username="user" password="@password@"
    initialSize="4" maxActive="8" 
    defaultAutoCommit="false"
    accessToUnderlyingConnectionAllowed="true"
    testOnReturn="true"
    validationQuery="select 1 from dual"
    poolPreparedStatements="false"
    connectionProperties="SetBigStringTryClob=true"
    factory="org.apache.commons.dbcp.BasicDataSourceFactory"
/>

myApp \ WEB-INF \ web.xml

<resource-ref>
    <description>My DataSource</description>
    <res-ref-name>jdbc/conn</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
4

3 に答える 3

3

実行が終了しないため、最終的にこの例外を無視することになりました。正確な原因はわかりませんが、致命的ではないようです。

于 2012-11-27T20:25:32.953 に答える
0

initialize()の呼び出しが欠落していると思います。これで、NPEがOdbcApiに修正されます。

于 2012-10-09T00:03:37.287 に答える
-1

私は以前、これが答えだと思っていました。私は間違っていた。

ついに私はそれを理解しました。データベースに裏打ちされたマネージドBeanがいくつかありました。これらの管理対象Beanには@eagerという注釈が付けられました

サーバーがEclipseからアプリを起動すると、それらはインスタンス化され、ツールはデータベースに移動してデータを取得しました。データベースBeanからメソッドに例外がスローされ(nullポインター例外)、その結果、データベースへの接続が開いたままになりました。

どういうわけか、.metadataフォルダが盗聴されて破損していました。Eclipseを終了しました。次に、Eclipseワークスペースに移動し、.metadataフォルダーをデスクトップにコピーして安全なコピーを作成してから、ワークスペースで削除しました。

Eclipseを再起動しました。プロジェクトはありませんでした。[インポート]>[ファイルシステム]を使用してインポートし直しました。

プロジェクトのプロパティと[ウィンドウ]>[設定]でビルドパスを修正する必要があり、Tomcatホームをリセットする必要がありました。出来上がり、この非常に厄介な問題を取り除きました。

それが問題の原因でした。これが誰かを助けることを願っています。

于 2017-01-27T07:31:55.830 に答える