简体   繁体   English

如何处理java.lang.AbstractMethodError:com.mysql.jdbc.JDBC4CallableStatement.closeOnCompletion()

[英]how to handle java.lang.AbstractMethodError: com.mysql.jdbc.JDBC4CallableStatement.closeOnCompletion()

I am using mysql-connector-java-5.1.20-bin.jar with jdk7 and tomcat7 but my code is giving abstractMethodError while executing callableStatement.closeOnCompletion().Code is given below : 我正在使用mysql-connector-java-5.1.20-bin.jar和jdk7以及tomcat7,但我的代码在执行callableStatement.closeOnCompletion()时给出了abstractMethodError。代码如下:

try { 尝试{

    Session session = HibernateUtil.currentSession();
    CallableStatement st = session.connection().prepareCall(
    "{call getOfflineNodes('" + strDevice + "',"
    + System.currentTimeMillis() + "," + polltime + ","+ status + ")}");
    ResultSet rs = st.executeQuery();
    Transaction tx = session.beginTransaction();
    st.closeOnCompletion();
    tx.commit();
    HibernateUtil.closeSession();
    return rs;
}

and complete exception is : 完全例外是:

java.lang.AbstractMethodError: com.mysql.jdbc.JDBC4CallableStatement.closeOnCompletion()V
at com.clearcube.util.DMLLayer.getOfflineNodes(DMLLayer.java:90)
at com.clearcube.logging.ShutBladeAlertService.<init>(ShutBladeAlertService.java:80)
at com.clearcube.common.CMSServiceLoaderServlet.init(CMSServiceLoaderServlet.java:95)
at javax.servlet.GenericServlet.init(GenericServlet.java:160)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5015)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5302)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

can anybody tell me why this exception is coming and how to handle this. 任何人都可以告诉我为什么会出现这种异常以及如何解决这个问题。

code where i am using this returned resultSet is : 我使用此返回的resultSet的代码是:

timer.scheduleAtFixedRate(new TimerTask() {
          public void run()
          {
            String bladeMacs = "";
            String vmMacs = "";
            try
            {
              int poll = Integer.parseInt(
                ServerConfigurationService.getProperty("blade.refresh.time"));

              Calendar callendar = Calendar.getInstance();

              String strblade = "";
              String strvm = "";
              String Ip = "";
              ResultSet BladeRs = (ResultSet)DMLLayer.getOfflineNodes(
                "Blade", poll, 1);
              if (BladeRs != null) {
                boolean isBladeAlive = false;
                int x = 0;
                try {
                  while (BladeRs.next()) {

                    String mac = BladeRs.getString("macAddress");
                    String ip = BladeRs.getString("Ip");
                    isBladeAlive = 
                      EchoUDPClientDiscoveryObjectResponse.echo(InetAddress.getByName(BladeRs
                      .getString("Ip")), 6502, "any", 
                      3, 500);

                    if (!isBladeAlive) {

                      if (x > 0)
                      {
                        strblade = strblade + "\n";
                        bladeMacs = bladeMacs + "\n";
                      }

                      strblade = strblade + ip;
                      x = 2;
                      bladeMacs = bladeMacs + mac;
                    }
                    else
                    {
                        String query = "update DiscoveredNode set DateModified=:DateModified where MacAddress=:MacAddress";

                      ShutBladeAlertService.objTypeVector.removeAllElements();
                      ShutBladeAlertService.objFieldVector.removeAllElements();
                      ShutBladeAlertService.objValueVector.removeAllElements();

                      ShutBladeAlertService.objTypeVector.add("Long");
                      ShutBladeAlertService.objFieldVector.add("DateModified");
                      ShutBladeAlertService.objValueVector.add(
                        Long.valueOf(System.currentTimeMillis()));
                      ShutBladeAlertService.objTypeVector.add("String");
                      ShutBladeAlertService.objFieldVector.add("MacAddress");
                      ShutBladeAlertService.objValueVector.add(mac);

                      DMLLayer.runUpdateQuery(query, 
                        ShutBladeAlertService.objFieldVector, ShutBladeAlertService.objValueVector, 
                        ShutBladeAlertService.objTypeVector);
                    }
                  }

                  BladeRs.close();

                }
                catch (Exception ex1) {
                  ex1.printStackTrace();
                }

              }
          }
      }

Thanks in advance. 提前致谢。

closeOnCompletion() exists since Java 7. And the driver has been implemented with a previous version of the interface. 自Java 7以来, closeOnCompletion()存在。并且该驱动程序已使用以前版本的接口实现。 So this method is not implemented by the MySQL driver. 所以这个方法不是由MySQL驱动程序实现的。

Find if a more recent version exists with support for this method (but it doesn't seem to exist), or avoid calling this method. 查找是否存在支持此方法的更新版本(但似乎不存在),或者避免调用此方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z - java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z java.lang.AbstractMethodError:org.postgresql.jdbc3.Jdbc3Connection.isValid(I)Z - java.lang.AbstractMethodError: org.postgresql.jdbc3.Jdbc3Connection.isValid(I)Z java.lang.AbstractMethodError:org.jboss.resource.adapter.jdbc.jdk5.WrappedConnectionJDK5.createBlob()Ljava / sql / Blob; - java.lang.AbstractMethodError: org.jboss.resource.adapter.jdbc.jdk5.WrappedConnectionJDK5.createBlob()Ljava/sql/Blob; 为什么会出现java.lang.AbstractMethodError:oracle.jdbc.driver.OracleConnection错误? - Why do I get java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection error? java.lang.AbstractMethodError - java.lang.AbstractMethodError 表类型的调用过程。 创建结构时发生异常:java.lang.AbstractMethodError:oracle.jdbc.driver.T4CConnection.createStruct - Call procedure with a table type. Exception while create Struct: java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.createStruct Maven编译和运行时错误java.lang.AbstractMethodError:Tomcat 8 Server上的oracle.jdbc.driver.T4CConnection.isValid(I)Z - Maven compilation and run time error java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.isValid(I)Z on Tomcat 8 Server MySQL JDBC closeOnCompletion对PreparedStatement不起作用 - MySQL JDBC closeOnCompletion has no effect on PreparedStatement 如何解决对init方法的调用失败:java.lang.AbstractMethodError - How to solve invocation of init method failed: java.lang.AbstractMethodError Cassandra触发器java.lang.AbstractMethodError - Cassandra Trigger java.lang.AbstractMethodError
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM