0

Glassfish 3.1.2 で「userdb」と呼ばれる接続プールと「userdbresource」と呼ばれるデータソースを作成しました。データソースの作成中に、管理コンソールで「javax.sql.Datasource」としてタイプを指定しました。

私のREST Webサービスでは、次のコードを書きました

         DataSource ds = null;
        try
        {
        InitialContext ctx = new InitialContext();


            ds = (DataSource) ctx.lookup("userdbresource");
        }
        catch (NamingException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Connection con = (Connection) ds.getConnection();
        Statement stmt=con.createStatement();

私はいつもClassCast例外を受け取りますConnection con = (Connection) ds.getConnection();

web.xml に以下を追加しました

 <resource-ref>
        <res-ref-name>userdbresource</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>

しかし、変化はありません。com.mysql.jdbc.Connection を使用して検索した後、接続をアンラップしようとしました。しかし、変化はありません。

ログの実際のクラスキャスト例外は

java.lang.ClassCastException: com.sun.gjc.spi.jdbc40.ConnectionHolder40 cannot be cast to com.mysql.jdbc.Connection

プールから取得した接続を使用するために必要な変更を誰かが知っている場合は、お知らせください!!

ありがとうカビータ

4

1 に答える 1

2

import java.sql.Connection;jdbc接続ではないため、接続キャストは必要なく、データソース接続は次のようになります

Connect con = ds.getConnection();
于 2012-09-18T06:00:25.350 に答える