java ee - Root Cause of EJB Exceptions. Any clever ways ? -
java ee - Root Cause of EJB Exceptions. Any clever ways ? -
is there easy way root(real) cause of ejb exception? if @ stack trace of exception can figure out reason. example, in given illustration below hierarchy ejbexception> rollbackexception> databaseexception.
is there way find rather going way downwards ?
thank you.
javax.ejb.ejbexception: transaction aborted @ com.sun.ejb.containers.basecontainer.completenewtx(basecontainer.java:5142) @ com.sun.ejb.containers.basecontainer.postinvoketx(basecontainer.java:4901) @ com.sun.ejb.containers.basecontainer.postinvoke(basecontainer.java:2045) @ com.sun.ejb.containers.basecontainer.postinvoke(basecontainer.java:1994) @ com.sun.ejb.containers.ejblocalobjectinvocationhandler.invoke(ejblocalobjectinvocationhandler.java:222) @ com.sun.ejb.containers.ejblocalobjectinvocationhandlerdelegate.invoke(ejblocalobjectinvocationhandlerdelegate.java:89) @ $proxy631.edit(unknown source) @ edu.ac.xxx.zzz.yyy.code.session.__ejb31_generated__schedulefacade__intf____bean__.edit(unknown source) @ wicket_edu.ac.xxx.zzz.yyy.code.session.abstractfacade$$fastclassbycglib$$e02eb00e.invoke(<generated>) @ net.sf.cglib.proxy.methodproxy.invoke(methodproxy.java:204) @ org.apache.wicket.proxy.lazyinitproxyfactory$cglibinterceptor.intercept(lazyinitproxyfactory.java:317) @ wicket_edu.ac.xxx.zzz.yyy.code.session.schedulefacade$$enhancerbycglib$$3571e474.edit(<generated>) @ edu.ac.xxx.zzz.yyy.code.ui.equipment.editequipment$1.onsubmit(editequipment.java:55) @ org.apache.wicket.markup.html.form.form.delegatesubmit(form.java:1595) @ org.apache.wicket.markup.html.form.form.process(form.java:960) @ org.apache.wicket.markup.html.form.form.onformsubmitted(form.java:922) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:39) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:25) @ java.lang.reflect.method.invoke(method.java:597) @ org.apache.wicket.requestlistenerinterface.invoke(requestlistenerinterface.java:182) @ org.apache.wicket.request.target.component.listener.listenerinterfacerequesttarget.processevents(listenerinterfacerequesttarget.java:73) @ org.apache.wicket.request.abstractrequestcycleprocessor.processevents(abstractrequestcycleprocessor.java:92) @ org.apache.wicket.requestcycle.processeventsandrespond(requestcycle.java:1252) @ org.apache.wicket.requestcycle.step(requestcycle.java:1331) @ org.apache.wicket.requestcycle.steps(requestcycle.java:1438) @ org.apache.wicket.requestcycle.request(requestcycle.java:546) @ org.apache.wicket.protocol.http.wicketfilter.doget(wicketfilter.java:486) @ org.apache.wicket.protocol.http.wicketfilter.dofilter(wicketfilter.java:319) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:256) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:217) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:279) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:175) @ org.apache.catalina.core.standardpipeline.doinvoke(standardpipeline.java:655) @ org.apache.catalina.core.standardpipeline.invoke(standardpipeline.java:595) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:161) @ org.apache.catalina.connector.coyoteadapter.doservice(coyoteadapter.java:331) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:231) @ com.sun.enterprise.v3.services.impl.containermapper$adaptercallable.call(containermapper.java:317) @ com.sun.enterprise.v3.services.impl.containermapper.service(containermapper.java:195) @ com.sun.grizzly.http.processortask.invokeadapter(processortask.java:860) @ com.sun.grizzly.http.processortask.doprocess(processortask.java:757) @ com.sun.grizzly.http.processortask.process(processortask.java:1056) @ com.sun.grizzly.http.defaultprotocolfilter.execute(defaultprotocolfilter.java:229) @ com.sun.grizzly.defaultprotocolchain.executeprotocolfilter(defaultprotocolchain.java:137) @ com.sun.grizzly.defaultprotocolchain.execute(defaultprotocolchain.java:104) @ com.sun.grizzly.defaultprotocolchain.execute(defaultprotocolchain.java:90) @ com.sun.grizzly.http.httpprotocolchain.execute(httpprotocolchain.java:79) @ com.sun.grizzly.protocolchaincontexttask.docall(protocolchaincontexttask.java:54) @ com.sun.grizzly.selectionkeycontexttask.call(selectionkeycontexttask.java:59) @ com.sun.grizzly.contexttask.run(contexttask.java:71) @ com.sun.grizzly.util.abstractthreadpool$worker.dowork(abstractthreadpool.java:532) @ com.sun.grizzly.util.abstractthreadpool$worker.run(abstractthreadpool.java:513) @ java.lang.thread.run(thread.java:662) caused by: javax.transaction.rollbackexception: transaction marked rollback. @ com.sun.enterprise.transaction.javaeetransactionimpl.commit(javaeetransactionimpl.java:473) @ com.sun.enterprise.transaction.javaeetransactionmanagersimplified.commit(javaeetransactionmanagersimplified.java:855) @ com.sun.ejb.containers.basecontainer.completenewtx(basecontainer.java:5136) ... 53 more caused by: exception [eclipselink-4002] (eclipse persistence services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.databaseexception internal exception: com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception: update command denied user 'yang'@'localhost' table 'schedule' error code: 1142 call: update schedule set due_date = ? (id = ?) bind => [2 parameters bound] query: updateobjectquery(edu.ac.xxx.zzz.yyy.code.entity.schedule[id=26]) @ org.eclipse.persistence.exceptions.databaseexception.sqlexception(databaseexception.java:324) @ org.eclipse.persistence.internal.databaseaccess.databaseaccessor.executedirectnoselect(databaseaccessor.java:840) @ org.eclipse.persistence.internal.databaseaccess.databaseaccessor.executenoselect(databaseaccessor.java:906) @ org.eclipse.persistence.internal.databaseaccess.databaseaccessor.basicexecutecall(databaseaccessor.java:592) @ org.eclipse.persistence.internal.databaseaccess.databaseaccessor.executecall(databaseaccessor.java:535) @ org.eclipse.persistence.internal.sessions.abstractsession.basicexecutecall(abstractsession.java:1717) @ org.eclipse.persistence.sessions.server.clientsession.executecall(clientsession.java:253) @ org.eclipse.persistence.internal.queries.datasourcecallquerymechanism.executecall(datasourcecallquerymechanism.java:207) @ org.eclipse.persistence.internal.queries.datasourcecallquerymechanism.executecall(datasourcecallquerymechanism.java:193) @ org.eclipse.persistence.internal.queries.datasourcecallquerymechanism.updateobject(datasourcecallquerymechanism.java:749) @ org.eclipse.persistence.internal.queries.statementquerymechanism.updateobject(statementquerymechanism.java:432) @ org.eclipse.persistence.internal.queries.databasequerymechanism.updateobjectforwritewithchangeset(databasequerymechanism.java:1042) @ org.eclipse.persistence.queries.updateobjectquery.executecommitwithchangeset(updateobjectquery.java:84) @ org.eclipse.persistence.internal.queries.databasequerymechanism.executewritewithchangeset(databasequerymechanism.java:287) @ org.eclipse.persistence.queries.writeobjectquery.executedatabasequery(writeobjectquery.java:58) @ org.eclipse.persistence.queries.databasequery.execute(databasequery.java:844) @ org.eclipse.persistence.queries.databasequery.executeinunitofwork(databasequery.java:743) @ org.eclipse.persistence.queries.objectlevelmodifyquery.executeinunitofworkobjectlevelmodifyquery(objectlevelmodifyquery.java:108) @ org.eclipse.persistence.queries.objectlevelmodifyquery.executeinunitofwork(objectlevelmodifyquery.java:85) @ org.eclipse.persistence.internal.sessions.unitofworkimpl.internalexecutequery(unitofworkimpl.java:2871) @ org.eclipse.persistence.internal.sessions.abstractsession.executequery(abstractsession.java:1516) @ org.eclipse.persistence.internal.sessions.abstractsession.executequery(abstractsession.java:1498) @ org.eclipse.persistence.internal.sessions.abstractsession.executequery(abstractsession.java:1449) @ org.eclipse.persistence.internal.sessions.commitmanager.commitchangedobjectsforclasswithcha info: ngeset(commitmanager.java:265) @ org.eclipse.persistence.internal.sessions.commitmanager.commitallobjectswithchangeset(commitmanager.java:128) @ org.eclipse.persistence.internal.sessions.abstractsession.writeallobjectswithchangeset(abstractsession.java:3799) @ org.eclipse.persistence.internal.sessions.unitofworkimpl.committodatabase(unitofworkimpl.java:1415) @ org.eclipse.persistence.internal.sessions.repeatablewriteunitofwork.committodatabase(repeatablewriteunitofwork.java:636) @ org.eclipse.persistence.internal.sessions.unitofworkimpl.committodatabasewithchangeset(unitofworkimpl.java:1505) @ org.eclipse.persistence.internal.sessions.unitofworkimpl.issuesqlbeforecompletion(unitofworkimpl.java:3143) @ org.eclipse.persistence.internal.sessions.repeatablewriteunitofwork.issuesqlbeforecompletion(repeatablewriteunitofwork.java:346) @ org.eclipse.persistence.transaction.abstractsynchronizationlistener.beforecompletion(abstractsynchronizationlistener.java:157) @ org.eclipse.persistence.transaction.jtasynchronizationlistener.beforecompletion(jtasynchronizationlistener.java:68) @ com.sun.enterprise.transaction.javaeetransactionimpl.commit(javaeetransactionimpl.java:435) ... 55 more caused by: com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception: update command denied user 'yang'@'localhost' table 'schedule' @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:39) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:27) @ java.lang.reflect.constructor.newinstance(constructor.java:513) @ com.mysql.jdbc.util.handlenewinstance(util.java:411) @ com.mysql.jdbc.util.getinstance(util.java:386) @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:1052) @ com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:3609) @ com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:3541) @ com.mysql.jdbc.mysqlio.sendcommand(mysqlio.java:2002) @ com.mysql.jdbc.mysqlio.sqlquerydirect(mysqlio.java:2163) @ com.mysql.jdbc.connectionimpl.execsql(connectionimpl.java:2624) @ com.mysql.jdbc.preparedstatement.executeinternal(preparedstatement.java:2127) @ com.mysql.jdbc.preparedstatement.executeupdate(preparedstatement.java:2427) @ com.mysql.jdbc.preparedstatement.executeupdate(preparedstatement.java:2345) @ com.mysql.jdbc.preparedstatement.executeupdate(preparedstatement.java:2330) @ org.eclipse.persistence.internal.databaseaccess.databaseaccessor.executedirectnoselect(databaseaccessor.java:831) ... 87 more
that's how java exceptions work. if caught exception rethrown wrapped in exception, long winded traces this.
you consider creating servlet filter filterchain#dofilter()
in try-catch
extracts exception#getcause()
in loop until lastly reached , log separate file , read log file instead.
java-ee ejb
Comments
Post a Comment