i'm trying reproduce error, , i'm having difficulty doing it.
essentially, i'm doing is:
- deploy spring mvc webapp.
- submit query webapp, calls thread sleep 5 minutes.
- in time delete webapp deployment weblogic.
what i'm expecting webapp throw noclassdeffound stacktrace in logs.
eg.
java.lang.noclassdeffounderror: org/apache/log4j/defaultthrowablerenderer @ org.apache.log4j.spi.throwableinformation.getthrowablestrrep(throwableinformation.java:87) @ org.apache.log4j.spi.loggingevent.getthrowablestrrep(loggingevent.java:413) @ org.apache.log4j.writerappender.subappend(writerappender.java:313) @ org.apache.log4j.writerappender.append(writerappender.java:162) @ org.apache.log4j.appenderskeleton.doappend(appenderskeleton.java:251) @ org.apache.log4j.helpers.appenderattachableimpl.appendlooponappenders(appenderattachableimpl.java:66) @ org.apache.log4j.category.callappenders(category.java:206) @ org.apache.log4j.category.forcedlog(category.java:391) @ org.apache.log4j.category.log(category.java:856) @ org.apache.commons.logging.impl.log4jlogger.debug(log4jlogger.java:166) @ org.springframework.web.servlet.frameworkservlet.processrequest(frameworkservlet.java:989) @ org.springframework.web.servlet.frameworkservlet.dopost(frameworkservlet.java:868) @ javax.servlet.http.httpservlet.service(httpservlet.java:727) @ org.springframework.web.servlet.frameworkservlet.service(frameworkservlet.java:842) @ javax.servlet.http.httpservlet.service(httpservlet.java:820) @ weblogic.servlet.internal.stubsecurityhelper$servletserviceaction.run(stubsecurityhelper.java:227) @ weblogic.servlet.internal.stubsecurityhelper.invokeservlet(stubsecurityhelper.java:125) @ weblogic.servlet.internal.servletstubimpl.execute(servletstubimpl.java:300) @ weblogic.servlet.internal.servletstubimpl.execute(servletstubimpl.java:183) @ weblogic.servlet.internal.webappservletcontext$servletinvocationaction.wraprun(webappservletcontext.java:3717) @ weblogic.servlet.internal.webappservletcontext$servletinvocationaction.run(webappservletcontext.java:3681) @ weblogic.security.acl.internal.authenticatedsubject.doas(authenticatedsubject.java:321) @ weblogic.security.service.securitymanager.runas(securitymanager.java:120) @ weblogic.servlet.internal.webappservletcontext.securedexecute(webappservletcontext.java:2277) @ weblogic.servlet.internal.webappservletcontext.execute(webappservletcontext.java:2183) @ weblogic.servlet.internal.servletrequestimpl.run(servletrequestimpl.java:1454) @ weblogic.work.executethread.execute(executethread.java:207) @ weblogic.work.executethread.run(executethread.java:176) instead what's happening webapp finishes executing fine:
here's code:
@controller @scope("session") public class weblogicfail { private logger logger = loggerfactory .getlogger(weblogicfail.class); public weblogicfail() { } @autowired aabean ab; @requestmapping("/test") @responsebody public void submitquery(httpservletrequest request, httpservletresponse res) throws ioexception { request.getsession().setmaxinactiveinterval(15*60); mycontainer mc = ab.somemethod(); logger.debug(mc.tostring()); mycontainer mc2 = new mycontainer("aaaaa"); logger.debug(mc2.tostring()); res.getoutputstream().write(("helloworld"+system.currenttimemillis()).getbytes()); res.getoutputstream().flush(); res.getoutputstream().close(); } } @component public class aabean { private logger logger = loggerfactory.getlogger(aabean.class); public mycontainer somemethod() { logger.debug("some method start"); try { thread.sleep(1000*60*10); //1000 milliseconds 1 second. } catch(interruptedexception ex) { thread.currentthread().interrupt(); } logger.debug("some method return"); return new mycontainer("here's container"); } } public class mycontainer { private string s; public mycontainer(string s) { super(); this.s = s; } @override public string tostring() { return this.s + system.currenttimemillis(); } } weblogicfail-servlet.xml:
<context:component-scan base-package="com.mytestspace" /> <context:annotation-config /> <mvc:annotation-driven /> <bean id="viewresolver" class="org.springframework.web.servlet.view.internalresourceviewresolver"> <property name="viewclass" value="org.springframework.web.servlet.view.jstlview" /> <property name="prefix" value="/web-inf/jsp/" /> <property name="suffix" value=".jsp" /> </bean> logger is:
<dependency> <groupid>org.slf4j</groupid> <artifactid>slf4j-log4j12</artifactid> <version>1.7.7</version> </dependency> and spring framework 3.2.0.release.
what i'm expecting here logs print:
09:11:50 debug aabean:19 - method start 09:21:50 debug aabean:27 - method return and stack trace in the domain level logs.
instead continues executing fine, logs following two:
09:21:50 debug weblogicfail:62 - here's container1437427310939 09:21:50 debug weblogicfail:65 - aaaaa1437427310939 and returns correct string browser.
if i've deleted deployment, how know find the class definition etc?
i've tried forcing garbage collection as per here, continues operate successfully.
this question isn't duplicate other question - 1 asking happens objects when deployment deleted.
Comments
Post a Comment