【问题标题】:MysqlDataSource throwing ClassCastException in GlassfishMysqlDataSource 在 Glassfish 中抛出 ClassCastException
【发布时间】:2015-07-15 13:42:33
【问题描述】:

我正在尝试创建一个MysqlDataSource 对象以连接到我的数据库。我需要这样做才能使用setRewriteBatchedStatements(boolean) 方法。

MysqlDataSource mysql mysql = (MysqlDataSource) context.lookup("jdbc/MySQLDataSource");

它会抛出以下异常:

2015-07-15T14:25:46.078+0100|Severe: java.lang.ClassCastException: com.sun.gjc.spi.jdbc40.DataSource40 cannot be cast to com.mysql.jdbc.jdbc2.optional.MysqlDataSource
at com.pododdle.dao.MySQL.mysql_conn(MySQL.java:30)
at com.pododdle.dao.MySQL.getMySQLConnection(MySQL.java:48)
at com.pododdle.dao.PodcastService.getPodcasts(PodcastService.java:112)
at com.pododdle.resources.FeedResource.getNewEpisodes(FeedResource.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)

以前我使用的是DataSource 对象,一切都运行良好,但我需要设置上述属性,而DataSource 对象不这样做。之前的代码如下:

mysql = (DataSource) context.lookup("jdbc/MySQLDataSource");

我在 Glassfish 4 网络服务器上运行代码,并连接到 MySQL5.6 数据库。

【问题讨论】:

    标签: java mysql jdbc glassfish classcastexception


    【解决方案1】:

    通过执行以下步骤避免了这个类转换异常:

    DataSource datasource = (DataSource) context.lookup("jdbc/MySQLDataSource");
    MysqlDataSource mysql_datasource = datasource.unwrap(MysqlDataSource.class);
    

    您现在可以毫无问题地将 rewriteBatchedStatements 设置为 true!

    mysql_datasource.setRewriteBatchedStatements(true);
    Connection conn = mysql.getConnection();
    

    【讨论】:

      猜你喜欢
      • 2017-12-24
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 2013-04-13
      相关资源
      最近更新 更多