6 Replies Latest reply on Mar 24, 2008 2:16 AM by Chetan Nehete

    java.lang.NoSuchMethodException: org.jboss.resource.adapter.

    Chetan Nehete Newbie

      Dear All,

      Earliar I got my application running on java 4 and jboss3.2.3,and it was running fine.

      Few days back,I had changed my java version to 5 and jboss to 4.0.2,and from then i am facing problem with executeBatch() method.My jboss4.0.2 console is giving following error,

      (I am executing executeBatch on PreparedStatement)

      java.lang.NoSuchMethodException: org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeBatch()

      Also,even after reverting back to earliar versions of both,i am facing the same issue on jboss3.2.3.

      Please do the needful.

        • 1. Re: java.lang.NoSuchMethodException: org.jboss.resource.adap
          jaikiran pai Master

          Post the entire exception stacktrace. When do use see this error? Also post the appropriate code of your application.

          Remember to use the Code button while posting the logs and the code. For more details see my signature which has the link to the wiki, listing down the guidelines for posting in the forums.

          • 2. Re: java.lang.NoSuchMethodException: org.jboss.resource.adap
            Chetan Nehete Newbie

            Dear jaikiran,

            Please find the code below,


            
            public int modifyMasterData(String[] selEmployeeId,
             String[] facilityId, String[] facilityValues)
             throws RemoteException, ValidationException {
            
             Connection con = null;
             PreparedStatement pstmt = null;
            
             long salMasterId = 0;
            
             try {
             con = ConnectionManager.getConnection();
            
             pstmt = StatementFactory.getStatement(con,
             getQuery("SQL_MODIFY_MASTER"));
             for (int i = 0; i < selEmployeeId.length; i++) {
            
             salMasterId = this.getMaxCount("MASTER_ID",
             "TAB_EMP_MASTER", con);
            
             if (facilityId.charAt(0) == ',') {
             int index = facilityId.indexOf(",");
             if (index == 0) {
             facilityId = facilityId.substring(index + 1,
             facilityId.length());
             }
             }
             String[] tempFacilityIds = facilityId.split(",");
            
             if (facilityValues != null && facilityValues != ""
             && facilityValues.charAt(0) == ',') {
             int index = facilityValues.indexOf(",");
             if (index == 0) {
             facilityValues = facilityValues.substring(
             index + 1, facilityValues.length());
             }
             }
             String[] tempFacilityValues = facilityValues.split(",");
            
             for (int j = 0; j < tempFacilityIds.length; j++) {
             if (tempFacilityValues[j] != null
             && tempFacilityValues[j].length() > 0) {
             pstmt.setLong(1, ParsingUtility
             .parseToLong(tempFacilityValues[j]));
             } else {
             pstmt.setLong(1, 0);
             }
             pstmt.setLong(2, ParsingUtility
             .parseToLong(selEmployeeId));
             pstmt.setLong(3, ParsingUtility
             .parseToLong(selEmployeeId));
             pstmt.setLong(4, ParsingUtility
             .parseToLong(tempFacilityIds[j]));
             pstmt.addBatch();
             }
             pstmt.executeBatch();
             }
             ConnectionManager.cleanUp(null, pstmt);
             } catch (Exception e) {
             e.printStackTrace();
             } finally {
             ConnectionManager.cleanUp(con, pstmt);
             }
            
             return selEmployeeId.length;
             }
            
            


            The screen consists of rows having master data.I can select multiple rows with the help of checkbox with every row.Then i am clicking on update,which calls above method.

            Jboss3.2.3 stacktrace for above error is given below.

            12:41:55,517 ERROR [STDERR] java.lang.NoSuchMethodException: org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.ex
            ecuteBatch()
            12:41:55,517 ERROR [STDERR] at java.lang.Class.getDeclaredMethod(Class.java:1264)
            12:41:55,517 ERROR [STDERR] at net.itcube.util.jdbc.DebuggableStatement.executeVerboseQuery(DebuggableStatement.java
            :949)
            12:41:55,517 ERROR [STDERR] at net.itcube.util.jdbc.DebuggableStatement.executeBatch(DebuggableStatement.java:257)
            12:41:55,517 ERROR [STDERR] at net.itcube.payroll.report.ReportSessionBean.modifySalaryMasterData(ReportSessionBean.
            java:1490)
            12:41:55,517 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            12:41:55,517 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            12:41:55,517 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

            12:41:55,517 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:324)
            12:41:55,517 ERROR [STDERR] at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionC
            ontainer.java:683)
            12:41:55,517 ERROR [STDERR] at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnect
            ionInterceptor.java:185)
            12:41:55,517 ERROR [STDERR] at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInst
            anceInterceptor.java:72)
            12:41:55,517 ERROR [STDERR] at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)

            12:41:55,517 ERROR [STDERR] at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267)

            12:41:55,517 ERROR [STDERR] at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:128)
            12:41:55,517 ERROR [STDERR] at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:118)
            12:41:55,517 ERROR [STDERR] at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
            12:41:55,517 ERROR [STDERR] at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderIntercep
            tor.java:122)
            12:41:55,517 ERROR [STDERR] at org.jboss.ejb.StatelessSessionContainer.internalInvoke(StatelessSessionContainer.java
            :331)
            12:41:55,517 ERROR [STDERR] at org.jboss.ejb.Container.invoke(Container.java:700)
            12:41:55,517 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            12:41:55,517 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            12:41:55,517 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

            12:41:55,517 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:324)
            12:41:55,517 ERROR [STDERR] at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java
            :284)
            12:41:55,517 ERROR [STDERR] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
            12:41:55,517 ERROR [STDERR] at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:101)
            12:41:55,517 ERROR [STDERR] at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:90)
            12:41:55,517 ERROR [STDERR] at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46)
            12:41:55,517 ERROR [STDERR] at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:45)
            12:41:55,517 ERROR [STDERR] at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.ja
            va:100)
            12:41:55,517 ERROR [STDERR] at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:85)
            12:41:55,517 ERROR [STDERR] at $Proxy59.modifySalaryMasterData(Unknown Source)
            12:41:55,517 ERROR [STDERR] at net.itcube.payroll.util.CommonPayrollAPI.modifySalaryMasterData(CommonPayrollAPI.java
            :1252)
            12:41:55,517 ERROR [STDERR] at net.itcube.payroll.report.SalaryMasterReportForm.modifySalaryMasterData(SalaryMasterR
            eportForm.java:104)
            12:41:55,517 ERROR [STDERR] at net.itcube.payroll.report.SalaryMasterReportFormAction.performAction(SalaryMasterRepo
            rtFormAction.java:42)
            12:41:55,532 ERROR [STDERR] at net.itcube.lookup.AbstractLookupAction.perform(AbstractLookupAction.java:90)
            12:41:55,532 ERROR [STDERR] at org.apache.struts.action.ActionServlet.processActionPerform(ActionServlet.java:1787)
            12:41:55,532 ERROR [STDERR] at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1586)
            12:41:55,532 ERROR [STDERR] at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)
            12:41:55,532 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
            12:41:55,532 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCha
            in.java:247)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
            193)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:643)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:643)
            12:41:55,532 ERROR [STDERR] at org.jboss.web.tomcat.security.JBossSecurityMgrRealm.invoke(JBossSecurityMgrRealm.java
            :220)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:641)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:641)
            12:41:55,532 ERROR [STDERR] at org.jboss.web.tomcat.tc4.statistics.ContainerStatsValve.invoke(ContainerStatsValve.ja
            va:76)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:641)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:643)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)

            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:641)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:641)
            12:41:55,532 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValv
            e.java:65)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:641)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:577)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:641)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:643)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
            12:41:55,532 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
            12:41:55,532 ERROR [STDERR] at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:197)
            12:41:55,532 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
            12:41:55,532 ERROR [STDERR] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Htt
            p11Protocol.java:549)
            12:41:55,532 ERROR [STDERR] at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)
            12:41:55,532 ERROR [STDERR] at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)
            12:41:55,532 ERROR [STDERR] at java.lang.Thread.run(Thread.java:534)
            12:41:55,532 ERROR [STDERR] java.sql.SQLException: Could not execute sql command
            12:41:55,532 ERROR [STDERR] at net.itcube.util.jdbc.DebuggableStatement.executeBatch(DebuggableStatement.java:264)
            12:41:55,532 ERROR [STDERR] at net.itcube.payroll.report.ReportSessionBean.modifySalaryMasterData(ReportSessionBean.
            java:1490)
            12:41:55,532 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            12:41:55,532 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            12:41:55,532 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

            12:41:55,532 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:324)
            12:41:55,532 ERROR [STDERR] at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionC
            ontainer.java:683)
            12:41:55,532 ERROR [STDERR] at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnect
            ionInterceptor.java:185)
            12:41:55,532 ERROR [STDERR] at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInst
            anceInterceptor.java:72)
            12:41:55,532 ERROR [STDERR] at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)

            12:41:55,532 ERROR [STDERR] at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267)

            12:41:55,532 ERROR [STDERR] at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:128)
            12:41:55,532 ERROR [STDERR] at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:118)
            12:41:55,532 ERROR [STDERR] at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
            12:41:55,532 ERROR [STDERR] at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderIntercep
            tor.java:122)
            12:41:55,532 ERROR [STDERR] at org.jboss.ejb.StatelessSessionContainer.internalInvoke(StatelessSessionContainer.java
            :331)
            12:41:55,532 ERROR [STDERR] at org.jboss.ejb.Container.invoke(Container.java:700)
            12:41:55,532 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            12:41:55,532 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            12:41:55,532 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

            12:41:55,532 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:324)
            12:41:55,532 ERROR [STDERR] at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java
            :284)
            12:41:55,532 ERROR [STDERR] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
            12:41:55,532 ERROR [STDERR] at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:101)
            12:41:55,532 ERROR [STDERR] at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:90)
            12:41:55,532 ERROR [STDERR] at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46)
            12:41:55,532 ERROR [STDERR] at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:45)
            12:41:55,548 ERROR [STDERR] at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.ja
            va:100)
            12:41:55,564 ERROR [STDERR] at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:85)
            12:41:55,564 ERROR [STDERR] at $Proxy59.modifySalaryMasterData(Unknown Source)
            12:41:55,564 ERROR [STDERR] at net.itcube.payroll.util.CommonPayrollAPI.modifySalaryMasterData(CommonPayrollAPI.java
            :1252)
            12:41:55,564 ERROR [STDERR] at net.itcube.payroll.report.SalaryMasterReportForm.modifySalaryMasterData(SalaryMasterR
            eportForm.java:104)
            12:41:55,564 ERROR [STDERR] at net.itcube.payroll.report.SalaryMasterReportFormAction.performAction(SalaryMasterRepo
            rtFormAction.java:42)
            12:41:55,564 ERROR [STDERR] at net.itcube.lookup.AbstractLookupAction.perform(AbstractLookupAction.java:90)
            12:41:55,564 ERROR [STDERR] at org.apache.struts.action.ActionServlet.processActionPerform(ActionServlet.java:1787)
            12:41:55,564 ERROR [STDERR] at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1586)
            12:41:55,564 ERROR [STDERR] at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)
            12:41:55,564 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
            12:41:55,564 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCha
            in.java:247)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
            193)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:643)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:643)
            12:41:55,564 ERROR [STDERR] at org.jboss.web.tomcat.security.JBossSecurityMgrRealm.invoke(JBossSecurityMgrRealm.java
            :220)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:641)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:641)
            12:41:55,564 ERROR [STDERR] at org.jboss.web.tomcat.tc4.statistics.ContainerStatsValve.invoke(ContainerStatsValve.ja
            va:76)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:641)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:643)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)

            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:641)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:641)
            12:41:55,564 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValv
            e.java:65)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:641)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:577)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:641)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Sta
            ndardPipeline.java:643)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
            12:41:55,564 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
            12:41:55,564 ERROR [STDERR] at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:197)
            12:41:55,564 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
            12:41:55,564 ERROR [STDERR] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Htt
            p11Protocol.java:549)
            12:41:55,564 ERROR [STDERR] at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)
            12:41:55,564 ERROR [STDERR] at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)
            12:41:55,564 ERROR [STDERR] at java.lang.Thread.run(Thread.java:534)

            Please do the needful.


            • 3. Re: java.lang.NoSuchMethodException: org.jboss.resource.adap
              jaikiran pai Master

               

              12:41:55,517 ERROR [STDERR] at java.lang.Class.getDeclaredMethod(Class.java:1264)
              12:41:55,517 ERROR [STDERR] at net.itcube.util.jdbc.DebuggableStatement.executeVerboseQuery(DebuggableStatement.java


              Looks like your application's class net.itcube.util.jdbc.DebuggableStatement is trying to call a method on JBoss specific class. Do you have the code of DebuggableStatement.executeVerboseQuery, which might show us which was exactly might be wrong?

              I checked the jar files in both 3.2.3 and 4.0.3 and i do see that the executeBatch method on WrappedPreparedStatement (which extends from WrappedStatement) is available in both the versions. Did you modify any of the jar files in JBoss?

              • 4. Re: java.lang.NoSuchMethodException: org.jboss.resource.adap
                Chetan Nehete Newbie

                Hi Jaikiran,

                Please find code for debuggable statement class below,

                And I think i didn't change any jar file.

                Please do the needful.

                
                package com.work.net;
                
                import java.io.InputStream;
                import java.io.Reader;
                import java.lang.reflect.InvocationTargetException;
                import java.lang.reflect.Method;
                import java.math.BigDecimal;
                import java.net.URL;
                import java.sql.Blob;
                import java.sql.Clob;
                import java.sql.Connection;
                import java.sql.ParameterMetaData;
                import java.sql.PreparedStatement;
                import java.sql.Ref;
                import java.sql.ResultSet;
                import java.sql.ResultSetMetaData;
                import java.sql.SQLException;
                import java.sql.SQLWarning;
                import java.sql.Time;
                import java.sql.Timestamp;
                import java.util.Calendar;
                import java.util.StringTokenizer;
                
                
                public class DebuggableStatement implements PreparedStatement {
                
                 private PreparedStatement ps; //preparedStatement being proxied for.
                 private String sql; //original statement going to database.
                 private String filteredSql;
                 //statement filtered for rogue '?' that are not bind variables.
                 private DebugObject[] variables; //array of bind variables
                 private SqlFormatter formatter; //format for dates
                 private long startTime; //time that statement began execution
                 private long executeTime; //time elapsed while executing statement
                 private DebugLevel debugLevel; //level of debug
                
                
                 protected DebuggableStatement(
                 Connection con,
                 String sqlStatement,
                 SqlFormatter formatter,
                 DebugLevel debugLevel)
                 throws SQLException {
                 //set values for member variables
                 this.ps = con.prepareStatement(sqlStatement);
                 this.sql = sqlStatement;
                 this.debugLevel = debugLevel;
                 this.formatter = formatter;
                
                 //see if there are any '?' in the statement that are not bind variables
                 //and filter them out.
                 boolean isString = false;
                 char[] sqlString = sqlStatement.toCharArray();
                 for (int i = 0; i < sqlString.length; i++) {
                 if (sqlString == '\'')
                 isString = !isString;
                 //substitute the ? with an unprintable character if the ? is in a
                 //string.
                 if (sqlString == '?' && isString)
                 sqlString = '\u0007';
                 }
                 filteredSql = new String(sqlString);
                
                 //find out how many variables are present in statement.
                 int count = 0;
                 int index = -1;
                 while ((index = filteredSql.indexOf("?", index + 1)) != -1) {
                 count++;
                 }
                
                 //show how many bind variables found
                 if (debugLevel == DebugLevel.VERBOSE)
                 System.out.println("count= " + count);
                
                 //create array for bind variables
                 variables = new DebugObject[count];
                
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public void addBatch() throws SQLException {
                 ps.addBatch();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public void addBatch(String sql) throws SQLException {
                 ps.addBatch();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public void cancel() throws SQLException {
                 ps.cancel();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public void clearBatch() throws SQLException {
                 ps.clearBatch();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public void clearParameters() throws SQLException {
                 ps.clearParameters();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public void clearWarnings() throws SQLException {
                 ps.clearWarnings();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public void close() throws SQLException {
                 ps.close();
                 }
                
                 /**
                 * Executes query and Calculates query execution time if DebugLevel = VERBOSE
                 * @return results of query
                 */
                 public boolean execute() throws SQLException {
                 //execute query
                 Boolean results = null;
                 try {
                 results = (Boolean) executeVerboseQuery("execute", null);
                 }
                 catch (SQLException sqle) {
                 throw sqle;
                 }
                 catch (Exception e) {
                 e.printStackTrace();
                 throw new SQLException("Could not execute sql command");
                 }
                 return results.booleanValue();
                 }
                
                 /**
                 * This method is only here for convenience. If a different sql string is executed
                 * than was passed into Debuggable, unknown results will occur.
                 * Executes query and Calculates query execution time if DebugLevel = VERBOSE
                 * @param sql should be same string that was passed into Debuggable
                 * @return results of query
                 */
                 public boolean execute(String sql) throws SQLException {
                 //execute query
                 Boolean results = null;
                 try {
                 results =
                 (Boolean) executeVerboseQuery("execute",
                 new Class[] { sql.getClass()});
                 }
                 catch (SQLException sqle) {
                 throw sqle;
                 }
                 catch (Exception e) {
                 e.printStackTrace();
                 throw new SQLException("Could not execute sql command");
                 }
                 return results.booleanValue();
                 }
                
                 /**
                 * Executes query and Calculates query execution time if DebugLevel = VERBOSE
                 * @return results of query
                 */
                 public int[] executeBatch() throws SQLException {
                 //execute query
                 int[] results = null;
                 try {
                 results = (int[]) executeVerboseQuery("executeBatch", null);
                 }
                 catch (SQLException sqle) {
                 throw sqle;
                 }
                 catch (Exception e) {
                 e.printStackTrace();
                 throw new SQLException("Could not execute sql command");
                 }
                 return results;
                 }
                
                 /**
                 * Executes query and Calculates query execution time if DebugLevel = VERBOSE
                 * @return results of query
                 */
                 public ResultSet executeQuery() throws SQLException {
                 //execute query
                 ResultSet results = null;
                 try {
                 results = (ResultSet) executeVerboseQuery("executeQuery", null);
                 }
                 catch (SQLException sqle) {
                 throw sqle;
                 }
                 catch (Exception e) {
                 e.printStackTrace();
                 throw new SQLException("Could not execute sql command");
                 }
                 return results;
                 }
                
                 /**
                 * This method is only here for convenience. If a different sql string is executed
                 * than was passed into Debuggable, unknown results will occur.
                 * Executes query and Calculates query execution time if DebugLevel = VERBOSE
                 * @param sql should be same string that was passed into Debuggable
                 * @return results of query
                 */
                 public ResultSet executeQuery(String sql) throws SQLException {
                 //execute query
                 ResultSet results = null;
                 try {
                 results =
                 (ResultSet) executeVerboseQuery("executeQuery",
                 new Class[] { sql.getClass()});
                 }
                 catch (SQLException sqle) {
                 throw sqle;
                 }
                 catch (Exception e) {
                 e.printStackTrace();
                 throw new SQLException("Could not execute sql command");
                 }
                 return results;
                 }
                
                 /**
                 * Executes query and Calculates query execution time if DebugLevel = VERBOSE
                 * @return results of query
                 */
                 public int executeUpdate() throws SQLException {
                 //execute query
                 Integer results = null;
                 try {
                 results = (Integer) executeVerboseQuery("executeUpdate", null);
                 }
                 catch (SQLException sqle) {
                 throw sqle;
                 }
                 catch (Exception e) {
                 e.printStackTrace();
                 throw new SQLException("Could not execute sql command");
                 }
                 return results.intValue();
                 }
                
                 /**
                 * This method is only here for convenience. If a different sql string is executed
                 * than was passed into Debuggable, unknown results will occur.
                 * Executes query and Calculates query execution time if DebugLevel = VERBOSE
                 * @param sql should be same string that was passed into Debuggable
                 * @return results of query
                 */
                 public int executeUpdate(String sql) throws SQLException {
                 //execute query
                 Integer results = null;
                 try {
                 results =
                 (Integer) executeVerboseQuery("executeUpdate",
                 new Class[] { sql.getClass()});
                 }
                 catch (SQLException sqle) {
                 throw sqle;
                 }
                 catch (Exception e) {
                 e.printStackTrace();
                 throw new SQLException("Could not execute sql command");
                 }
                 return results.intValue();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public Connection getConnection() throws SQLException {
                 return ps.getConnection();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public int getFetchDirection() throws SQLException {
                 return ps.getFetchDirection();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public int getFetchSize() throws SQLException {
                 return ps.getFetchSize();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public int getMaxFieldSize() throws SQLException {
                 return ps.getMaxFieldSize();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public int getMaxRows() throws SQLException {
                 return ps.getMaxRows();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public ResultSetMetaData getMetaData() throws SQLException {
                 return ps.getMetaData();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public boolean getMoreResults() throws SQLException {
                 return ps.getMoreResults();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public int getQueryTimeout() throws SQLException {
                 return ps.getQueryTimeout();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public ResultSet getResultSet() throws SQLException {
                 return ps.getResultSet();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public int getResultSetConcurrency() throws SQLException {
                 return ps.getResultSetConcurrency();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public int getResultSetType() throws SQLException {
                 return ps.getResultSetType();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public String getStatement() {
                 return sql;
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public int getUpdateCount() throws SQLException {
                 return ps.getUpdateCount();
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public SQLWarning getWarnings() throws SQLException {
                 return ps.getWarnings();
                 }
                
                 /**
                 * Tests Object o for parameterIndex (which parameter is being set) and places
                 * object in array of variables.
                 * @param parameterIndex which PreparedStatement parameter is being set.
                 * Sequence begins at 1.
                 * @param o Object being stored as parameter
                 * @exception Thrown if index exceeds number of variables.
                 */
                 private void saveObject(int parameterIndex, Object o)
                 throws ParameterIndexOutOfBoundsException {
                 if (parameterIndex > variables.length)
                 throw new ParameterIndexOutOfBoundsException(
                 "Parameter index of "
                 + parameterIndex
                 + " exceeds actual parameter count of "
                 + variables.length);
                
                 variables[parameterIndex - 1] = new DebugObject(o);
                 }
                
                 /**
                 Adds name of the Array's internal class type(by using x.getBaseTypeName())
                 to the debug String. If x is null, NULL is added to debug String.
                 @param i index of parameter
                 @param x parameter Object
                 */
                 public void setArray(int i, java.sql.Array x) throws SQLException {
                 saveObject(i, x);
                 ps.setArray(i, x);
                 }
                
                 /**
                 Debug string prints NULL if InputStream is null, or adds "stream length = " + length
                 */
                 public void setAsciiStream(int parameterIndex, InputStream x, int length)
                 throws SQLException {
                 saveObject(
                 parameterIndex,
                 (x == null ? "NULL" : "<stream length= " + length + ">"));
                 ps.setAsciiStream(parameterIndex, x, length);
                 }
                
                 /**
                 Adds BigDecimal to debug string in parameterIndex position.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setBigDecimal(int parameterIndex, BigDecimal x)
                 throws SQLException {
                 saveObject(parameterIndex, x);
                 ps.setBigDecimal(parameterIndex, x);
                 }
                
                 /**
                 Debug string prints NULL if InputStream is null, or adds "stream length= " + length.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 @param length length of InputStream
                 */
                 public void setBinaryStream(int parameterIndex, InputStream x, int length)
                 throws SQLException {
                 saveObject(
                 parameterIndex,
                 (x == null ? "NULL" : "<stream length= " + length + ">"));
                 ps.setBinaryStream(parameterIndex, x, length);
                 }
                
                 /**
                 Adds name of the object's class type(Blob) to the debug String. If
                 object is null, NULL is added to debug String.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setBlob(int parameterIndex, Blob x) throws SQLException {
                 saveObject(parameterIndex, x);
                 ps.setBlob(parameterIndex, x);
                 }
                
                 /**
                 Adds boolean to debug string in parameterIndex position.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setBoolean(int parameterIndex, boolean x) throws SQLException {
                 saveObject(parameterIndex, new Boolean(x));
                 ps.setBoolean(parameterIndex, x);
                 }
                
                 /**
                 Adds byte to debug string in parameterIndex position.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setByte(int parameterIndex, byte x) throws SQLException {
                 saveObject(parameterIndex, new Byte(x));
                 ps.setByte(parameterIndex, x);
                 }
                
                 /**
                 Adds byte[] to debug string in parameterIndex position.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setBytes(int parameterIndex, byte[] x) throws SQLException {
                 saveObject(
                 parameterIndex,
                 (x == null ? "NULL" : "byte[] length=" + x.length));
                 ps.setBytes(parameterIndex, x);
                 }
                
                 /**
                 Debug string prints NULL if reader is null, or adds "stream length= " + length.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 @param length length of InputStream
                 */
                 public void setCharacterStream(
                 int parameterIndex,
                 Reader reader,
                 int length)
                 throws SQLException {
                 saveObject(
                 parameterIndex,
                 (reader == null ? "NULL" : "<stream length= " + length + ">"));
                 ps.setCharacterStream(parameterIndex, reader, length);
                 }
                
                 /**
                 Adds name of the object's class type(Clob) to the debug String. If
                 object is null, NULL is added to debug String.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setClob(int i, Clob x) throws SQLException {
                 saveObject(i, x);
                 ps.setClob(i, x);
                 }
                
                 public void setCursorName(String name) throws SQLException {
                 ps.setCursorName(name);
                 }
                
                 /**
                 Debug string displays date in YYYY-MM-DD HH24:MI:SS.# format.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setDate(int parameterIndex, java.sql.Date x)
                 throws SQLException {
                 saveObject(parameterIndex, x);
                 ps.setDate(parameterIndex, x);
                 }
                
                 /**
                 this implementation assumes that the Date has the date, and the
                 calendar has the local info. For the debug string, the cal date
                 is set to the date of x. Debug string displays date in YYYY-MM-DD HH24:MI:SS.# format.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 @param cal uses x to set time
                 */
                 public void setDate(int parameterIndex, java.sql.Date x, Calendar cal)
                 throws SQLException {
                 cal.setTime(new java.util.Date(x.getTime()));
                 saveObject(parameterIndex, cal);
                 ps.setDate(parameterIndex, x, cal);
                 }
                
                 /**
                 Adds double to debug string in parameterIndex position.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setDouble(int parameterIndex, double x) throws SQLException {
                 saveObject(parameterIndex, new Double(x));
                 ps.setDouble(parameterIndex, x);
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public void setEscapeProcessing(boolean enable) throws SQLException {
                 ps.setEscapeProcessing(enable);
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public void setFormatter(SqlFormatter formatter) {
                 this.formatter = formatter;
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public void setFetchDirection(int direction) throws SQLException {
                 ps.setFetchDirection(direction);
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public void setFetchSize(int rows) throws SQLException {
                 ps.setFetchSize(rows);
                 }
                
                 /**
                 Adds float to debug string in parameterIndex position.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setFloat(int parameterIndex, float x) throws SQLException {
                 saveObject(parameterIndex, new Float(x));
                 ps.setFloat(parameterIndex, x);
                 }
                
                 /**
                 Adds int to debug string in parameterIndex position.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setInt(int parameterIndex, int x) throws SQLException {
                 saveObject(parameterIndex, new Integer(x));
                 ps.setInt(parameterIndex, x);
                 }
                
                 /**
                 Adds long to debug string in parameterIndex position.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setLong(int parameterIndex, long x) throws SQLException {
                 saveObject(parameterIndex, new Long(x));
                 ps.setLong(parameterIndex, x);
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public void setMaxFieldSize(int max) throws SQLException {
                 ps.setMaxFieldSize(max);
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public void setMaxRows(int max) throws SQLException {
                 ps.setMaxRows(max);
                 }
                
                 /**
                 Adds a NULL to the debug String.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setNull(int parameterIndex, int sqlType) throws SQLException {
                 saveObject(parameterIndex, "NULL");
                 ps.setNull(parameterIndex, sqlType);
                 }
                
                 /**
                 Adds a NULL to the debug String.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 @param typeName type of Object
                 */
                 public void setNull(int parameterIndex, int sqlType, String typeName)
                 throws SQLException {
                 saveObject(parameterIndex, "NULL");
                 ps.setNull(parameterIndex, sqlType, typeName);
                 }
                
                 /**
                 Adds name of the object's class type to the debug String. If
                 object is null, NULL is added to debug String.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setObject(int parameterIndex, Object x) throws SQLException {
                 saveObject(
                 parameterIndex,
                 (x == null ? "NULL" : x.getClass().getName()));
                 ps.setObject(parameterIndex, x);
                 }
                
                 /**
                 Adds name of the object's class type to the debug String. If
                 object is null, NULL is added to debug String.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 @param targetSqlType database type
                 */
                 public void setObject(int parameterIndex, Object x, int targetSqlType)
                 throws SQLException {
                 saveObject(
                 parameterIndex,
                 (x == null ? "NULL" : x.getClass().getName()));
                 ps.setObject(parameterIndex, x, targetSqlType);
                 }
                
                 /**
                 Adds name of the object's class type to the debug String. If
                 object is null, NULL is added to debug String.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 @param targetSqlType database type
                 @param scale see PreparedStatement
                 */
                 public void setObject(
                 int parameterIndex,
                 Object x,
                 int targetSqlType,
                 int scale)
                 throws SQLException {
                 saveObject(
                 parameterIndex,
                 (x == null ? "NULL" : x.getClass().getName()));
                 ps.setObject(parameterIndex, x, targetSqlType, scale);
                 }
                
                 /**
                 * Facade for PreparedStatement
                 */
                 public void setQueryTimeout(int seconds) throws SQLException {
                 ps.setQueryTimeout(seconds);
                 }
                
                 /**
                 From the javadocs:
                 A reference to an SQL structured type value in the database.
                 A Ref can be saved to persistent storage.
                 The output from this method call in DebuggableStatement is a string representation
                 of the Ref object by calling the Ref object's getBaseTypeName() method.
                 Again, this will only be a String representation of the actual object
                 being stored in the database.
                 @param i index of parameter
                 @param x parameter Object
                 */
                
                 public void setRef(int i, Ref x) throws SQLException {
                 saveObject(i, x);
                 ps.setRef(i, x);
                 }
                
                 /**
                 Adds short to debug string in parameterIndex position.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setShort(int parameterIndex, short x) throws SQLException {
                 saveObject(parameterIndex, new Short(x));
                 ps.setShort(parameterIndex, x);
                 }
                
                 /**
                 Adds String to debug string in parameterIndex position.
                 If String is null "NULL" is inserted in debug string.
                 ****note****
                 In situations where a single ' is in the string being
                 inserted in the database. The debug string will need to be modified to
                 reflect this when running the debug statement in the database.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setString(int parameterIndex, String x) throws SQLException {
                 saveObject(parameterIndex, x);
                 ps.setString(parameterIndex, x);
                 }
                
                 /**
                 Debug string displays Time in HH24:MI:SS.# format.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setTime(int parameterIndex, Time x) throws SQLException {
                 saveObject(parameterIndex, x);
                 ps.setTime(parameterIndex, x);
                 }
                
                 /**
                 This implementation assumes that the Time object has the time and
                 Calendar has the locale info. For the debug string, the cal time
                 is set to the value of x. Debug string displays time in HH24:MI:SS.# format.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 @param cal sets time based on x
                 */
                 public void setTime(int parameterIndex, Time x, Calendar cal)
                 throws SQLException {
                 cal.setTime(new java.util.Date(x.getTime()));
                 saveObject(parameterIndex, cal);
                 ps.setTime(parameterIndex, x, cal);
                 }
                
                 /**
                 Debug string displays timestamp in YYYY-MM-DD HH24:MI:SS.# format.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 */
                 public void setTimestamp(int parameterIndex, Timestamp x)
                 throws SQLException {
                 saveObject(parameterIndex, x);
                 ps.setTimestamp(parameterIndex, x);
                 }
                
                 /**
                 This implementation assumes that the Timestamp has the date/time and
                 Calendar has the locale info. For the debug string, the cal date/time
                 is set to the default value of Timestamp which is YYYY-MM-DD HH24:MI:SS.#.
                 Debug string displays timestamp in DateFormat.LONG format.
                 @param parameterIndex index of parameter
                 @param x parameter Object
                 @param cal sets time based on x
                 */
                 public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal)
                 throws SQLException {
                 cal.setTime(new java.util.Date(x.getTime()));
                 saveObject(parameterIndex, cal);
                 ps.setTimestamp(parameterIndex, x, cal);
                 }
                
                 /**
                 Method has been deprecated in PreparedStatement interface.
                 This method is present only to satisfy interface and does
                 not do anything.
                 Do not use...
                 */
                 public void setUnicodeStream(int parameterIndex, InputStream x, int length)
                 throws SQLException {
                 //ps.setUnicodeStream(parameterIndex, x, length);
                 }
                
                 /**
                 this toString is overidden to return a String representation of
                 the sql statement being sent to the database. If a bind variable
                 is missing then the String contains a ? + (missing variable #)
                 @return the above string representation
                 */
                
                 public String toString() {
                 StringTokenizer st = new StringTokenizer(filteredSql, "?");
                 int count = 1;
                 StringBuffer statement = new StringBuffer();
                 while (st.hasMoreTokens()) {
                 statement.append(st.nextToken());
                 if (count <= variables.length) {
                 if (variables[count - 1] != null
                 && variables[count - 1].isValueAssigned()) {
                 try {
                 statement.append(
                 formatter.format(variables[count - 1]));
                
                 }
                 catch (SQLException e) {
                 statement.append("SQLException");
                 }
                 }
                 else {
                 statement.append(
                 "? " + "(missing variable # " + count + " ) ");
                 }
                 }
                 count++;
                 }
                 //unfilter the string in case there where rogue '?' in query string.
                 char[] unfilterSql = statement.toString().toCharArray();
                 for (int i = 0; i < unfilterSql.length; i++) {
                 if (unfilterSql == '\u0007')
                 unfilterSql = '?';
                 }
                
                 //return execute time
                 if (debugLevel == DebugLevel.ON)
                 return new String(unfilterSql);
                 else
                 return new String(unfilterSql)
                 + System.getProperty("line.separator")
                 + System.getProperty("line.separator")
                 + "query executed in "
                 + executeTime
                 + " milliseconds"
                 + System.getProperty("line.separator");
                
                 }
                
                 private Object executeVerboseQuery(String methodName, Class[] parameters)
                 throws
                 SQLException,
                 NoSuchMethodException,
                 InvocationTargetException,
                 IllegalAccessException {
                 //determine which method we have
                 Method m = ps.getClass().getDeclaredMethod(methodName, parameters);
                
                 /* //debug is set to on, so no times are calculated
                 if (debugLevel == DebugLevel.ON)
                 return m.invoke(ps,parameters);
                 */
                 //calculate execution time for verbose debugging
                 start();
                 // Object returnObject = m.invoke(ps,parameters);
                 Object returnObject = null;
                 if (methodName.equals("executeUpdate")) {
                 int i = ps.executeUpdate();
                 returnObject = new Integer(i);
                 }
                 else {
                 returnObject = m.invoke(ps, parameters);
                 }
                 end();
                
                 //return the executions return type
                 return returnObject;
                 }
                
                 private void start() {
                 startTime = System.currentTimeMillis();
                 }
                
                 private void end() {
                 executeTime = System.currentTimeMillis() - startTime;
                 }
                
                 private class DebugObject {
                 private Object debugObject;
                 private SqlFormatter formatter = new OracleSqlFormatter();
                 private boolean valueAssigned;
                
                 public DebugObject(Object debugObject) {
                 this.debugObject = debugObject;
                 valueAssigned = true;
                 }
                
                 public Object getDebugObject() {
                 return debugObject;
                 }
                
                 public boolean isValueAssigned() {
                 return valueAssigned;
                 }
                
                 public String toString() {
                 String a = "";
                 try {
                 a = formatter.format(debugObject);
                 }
                 catch (SQLException sqle) {
                 sqle.printStackTrace();
                 }
                 finally {
                 }
                 return a;
                 }
                 }
                
                
                 //********* New methods are implemented, because we're going to use J2SDK1.4.2 for
                 //********* the Rheumatology Application, and in 1.4.2, there are following new methods
                 //********* which must be implemented if we implement the PreparedStatement interface.
                
                
                 /* (non-Javadoc)
                 * @see java.sql.Statement#getMoreResults(int)
                 */
                 public boolean getMoreResults(int current) throws SQLException {
                 return false;
                 }
                
                 /* (non-Javadoc)
                 * @see java.sql.PreparedStatement#getParameterMetaData()
                 */
                 public ParameterMetaData getParameterMetaData() throws SQLException {
                 return null;
                 }
                
                 /* (non-Javadoc)
                 * @see java.sql.PreparedStatement#setURL(int, java.net.URL)
                 */
                 public void setURL(int parameterIndex, URL x) throws SQLException {
                
                 }
                
                 /* (non-Javadoc)
                 * @see java.sql.Statement#execute(java.lang.String, int)
                 */
                 public boolean execute(String sql, int autoGeneratedKeys)
                 throws SQLException {
                 return false;
                 }
                
                 /* (non-Javadoc)
                 * @see java.sql.Statement#execute(java.lang.String, int[])
                 */
                 public boolean execute(String sql, int[] columnIndexes)
                 throws SQLException {
                 return false;
                 }
                
                 /* (non-Javadoc)
                 * @see java.sql.Statement#execute(java.lang.String, java.lang.String[])
                 */
                 public boolean execute(String sql, String[] columnNames)
                 throws SQLException {
                 return false;
                 }
                
                 /* (non-Javadoc)
                 * @see java.sql.Statement#executeUpdate(java.lang.String, int)
                 */
                 public int executeUpdate(String sql, int autoGeneratedKeys)
                 throws SQLException {
                 return 0;
                 }
                
                 /* (non-Javadoc)
                 * @see java.sql.Statement#executeUpdate(java.lang.String, int[])
                 */
                 public int executeUpdate(String sql, int[] columnIndexes)
                 throws SQLException {
                 return 0;
                 }
                
                 /* (non-Javadoc)
                 * @see java.sql.Statement#executeUpdate(java.lang.String, java.lang.String[])
                 */
                 public int executeUpdate(String sql, String[] columnNames)
                 throws SQLException {
                 return 0;
                 }
                
                 /* (non-Javadoc)
                 * @see java.sql.Statement#getGeneratedKeys()
                 */
                 public ResultSet getGeneratedKeys() throws SQLException {
                 return null;
                 }
                
                 /* (non-Javadoc)
                 * @see java.sql.Statement#getResultSetHoldability()
                 */
                 public int getResultSetHoldability() throws SQLException {
                 return 0;
                 }
                
                 }
                
                
                


                • 5. Re: java.lang.NoSuchMethodException: org.jboss.resource.adap
                  jaikiran pai Master

                   

                  java.lang.NoSuchMethodException: org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeBatch()



                  private Object executeVerboseQuery(String methodName, Class[] parameters)
                   throws
                   SQLException,
                   NoSuchMethodException,
                   InvocationTargetException,
                   IllegalAccessException {
                   //determine which method we have
                   Method m = ps.getClass().getDeclaredMethod(methodName, parameters);
                  
                  


                  The executeBatch method is available on the org.jboss.resource.adapter.jdbc.WrappedStatement which is a superclass of org.jboss.resource.adapter.jdbc.WrappedPreparedStatement. Your are calling getDeclaredMethod("executeBatch",null) on WrappedPreparedStatement and hence getting the NoSuchMethodException. The getDeclaredMethod method does not look for the method in the superclass(es). Instead use getMethod:

                  Method m = ps.getClass().getMethod(methodName, parameters);


                  See the javadoc of these methods to understand their difference http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html


                  • 6. Re: java.lang.NoSuchMethodException: org.jboss.resource.adap
                    Chetan Nehete Newbie


                    Dear jaikiran,

                    I have changed the calling method name to




                    Method m = ps.getClass().getMethod(methodName, parameters);



                    and it's working fine.

                    Big thanks for the valuable help.