4
WrappedConnectionJDK6 wrapped = (WrappedConnectionJDK6) dbStrategy.getConnection();
            Connection underlyingConn = wrapped.getUnderlyingConnection();
            OracleConnection oracleConn = (OracleConnection)underlyingConn;

最後の行はエラーを返します -

> ERROR
> [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/web].[resteasy-servlet]]
> (http-/0.0.0.0:8080-1) Servlet.service() for servlet resteasy-servlet
> threw exception: org.jboss.resteasy.spi.UnhandledException:
> java.lang.ClassCastException: oracle.jdbc.driver.T4CConnection cannot
> be cast to oracle.jdbc.OracleConnection
4

1 に答える 1

5

AFAIK T4CConnection は oracle.jdbc.OracleConnection を実装する必要があります。IMHO には 2 つのドライバー実装があり、1 つはアプリ サーバー上にあり、もう 1 つはプロジェクトの依存関係にあります。取得されたドライバー実装は共有クラス ローダーによって読み込まれ、webApp によって読み込まれたクラスにキャストしようとするため、クラス読み込みの問題が発生する必要があります。クラスローダー。

Web アプリの依存関係がサーバー提供の実装と同じであることを確認するか、パッケージ化するときに Web アプリから依存関係を除外することができます。

Maven を使用している場合は、スコープを に設定するだけですprovided

于 2013-04-16T11:58:25.183 に答える