geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Jencks (JIRA)" <...@geronimo.apache.org>
Subject [jira] Reopened: (GERONIMO-2079) No methodProxy in EJBInvocation at startup under heavy load
Date Tue, 06 Jun 2006 18:50:30 GMT
     [ http://issues.apache.org/jira/browse/GERONIMO-2079?page=all ]
     
David Jencks reopened GERONIMO-2079:
------------------------------------


kevan pointed out that although the fix makes operationMap work, it leaves all the other fields
in an indeterminate state.  We need something better.

My first thought was to initialize everything in the constructor or readObject method.  This
won't work because in general the target container won't be deployed when a proxy as part
of an ejb ref is deserialized.  There's no way around this, since the target might be in an
app that hasn't started or even been installed/deployed yet.

My current thought is to try to put all the info into a data object which is put into a volatile
field.  Comments and suggestions very welcome.

> No methodProxy in EJBInvocation at startup under heavy load
> -----------------------------------------------------------
>
>          Key: GERONIMO-2079
>          URL: http://issues.apache.org/jira/browse/GERONIMO-2079
>      Project: Geronimo
>         Type: Bug
>     Security: public(Regular issues) 
>   Components: OpenEJB
>     Versions: 1.1
>     Reporter: David Jencks
>     Assignee: David Jencks
>      Fix For: 1.2

>
> After deploying daytrader, if you apply heavy load (50 threads) you get about 60 exceptions
like this:
> java.lang.NullPointerException
>         at org.openejb.proxy.EJBMethodInterceptor.createEJBInvocation(EJBMethodInterceptor.java:203)
>         at org.openejb.proxy.EJBMethodInterceptor.intercept(EJBMethodInterceptor.java:131)
>         at org.openejb.proxy.EntityEJBLocalObject$$EnhancerByCGLIB$$84c9ae5f.getDataBean(<generated>)
>         at org.apache.geronimo.samples.daytrader.web.prims.PingServlet2EntityLocal.doGet(PingServlet2EntityLocal.java:126)
>         at org.apache.geronimo.samples.daytrader.web.prims.PingServlet2EntityLocal.doPost(PingServlet2EntityLocal.java:54)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>         at org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:46)
>         at org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:342)
>         at org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:31)
>         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
>         at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
>         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>         at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>         at java.lang.Thread.run(Thread.java:534)                                    
                                                                         
> Looking into the code, it appears that cglib is calling EJBMethodInterceptor with a null
methodProxy.  After these startup exceptions, which appear to occur within the first 2 seconds
of load, there are no further exceptions: i ran it for 17 minutes at 1200 pages/sec.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message