Hi all,
today we have to face a kind of strange problem, since we failed to
reproduce it in our entire development, debug and test environments.
Our application loads session beans (we don't use beans of other type in
this context) with this mechanism:
protected Object getBackingBean(
String name,
HttpServletRequest request, HttpServletResponse response ) {
ELContext elContext = getFacesContext(request, response).getELContext();
return elContext.getELResolver().getValue(elContext, null, name);
}
This works fine for 99.99% of requests. However, sometimes (up to 5
times a day, when 30 pilot users work with our application) we receive
an NPE (corresponding to a HTTP 500 displayed at the browser instead of
the expected frontend) like this:
0Trace: 2010/06/16 09:22:24.684 01 t=8C9CF0 c=UNK key=P8 (13007002)
ThreadId: 00000039
FunctionName: com.ibm.ws.webcontainer.servlet.ServletWrapper
SourceId: com.ibm.ws.webcontainer.servlet.ServletWrapper
Category: SEVERE
ExtendedMessage: BBOO0220E: SRVE0068E: Uncaught exception thrown in
one of the service methods of the servlet: ExternalCall. Excep
tion thrown : java.lang.NullPointerException
at
com.ibm.ws.webcontainer.srt.SRTServletRequest$SRTServletRequestHelper.ac
cess$200(SRTServletRequest.java:2573)
at
com.ibm.ws.webcontainer.srt.SRTServletRequest.getAttribute(SRTServletReq
uest.java:233)
at
com.ibm.ws.cache.servlet.CacheProxyRequest.getAttribute(CacheProxyReques
t.java:543)
at
com.ibm.ws.cache.servlet.CacheProxyRequest.getAttribute(CacheProxyReques
t.java:543)
at
com.ibm.ws.cache.servlet.CacheProxyRequest.getAttribute(CacheProxyReques
t.java:543)
at
org.apache.myfaces.trinidadinternal.context.external.ServletRequestMap.g
etAttribute(ServletRequestMap.java:42)
at
org.apache.myfaces.trinidadinternal.context.external.ModifiableAbstractA
ttributeMap.remove(ModifiableAbstractAttributeMap.java:7
4)
at
org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.unsetSco
pe(FacesCompositeELResolver.java:196)
at
org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue
(FacesCompositeELResolver.java:144)
at
common.web.dispatcher.AbstractCall.getBackingBean(AbstractCall.java:42)
at
common.web.dispatcher.ExternalCall.sendToArbeitskorb(ExternalCall.java:7
1)
at
common.web.dispatcher.ExternalCall.performTask(ExternalCall.java:42)
at common.web.dispatcher.AbstractCall.doGet(AbstractCall.java:26)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at
com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied(ServletWrapper.ja
va:282)
at
com.ibm.ws.cache.servlet.CacheHook.handleFragment(CacheHook.java:455)
at
com.ibm.ws.cache.servlet.CacheHook.handleServlet(CacheHook.java:265)
at
com.ibm.ws.cache.servlet.ServletWrapper.service(ServletWrapper.java:262)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.ja
va:1146)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.ja
va:1087)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterCh
ain.java:118)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterC
hain.java:87)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilter
Manager.java:848)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilter
Manager.java:691)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrap
per.java:588)
at
com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWr
apper.java:525)
at
com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheS
ervletWrapper.java:90)
at
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:764
)
at
com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1
478)
at
com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:1
33)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscriminatio
n(HttpInboundLink.java:458)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformatio
n(HttpInboundLink.java:387)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLi
nk.java:267)
at
com.ibm.ws390.channel.xmem.XMemConnLink.ready(XMemConnLink.java:776)
at
com.ibm.ws390.xmem.XMemSRBridgeImpl.httpinvoke(XMemSRBridgeImpl.java:230
)
at
com.ibm.ws390.xmem.XMemSRCppUtilities.httpinvoke(XMemSRCppUtilities.java
:74)
at com.ibm.ws390.orb.ServerRegionBridge.httpinvoke(Unknown Source)
at com.ibm.ws390.orb.ORBEJSBridge.httpinvoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor147.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at
com.ibm.ws390.orb.parameters.HTTPInvoke.HTTPInvokeParmSetter(HTTPInvoke.
java:107)
at com.ibm.ws390.orb.CommonBridge.nativeRunApplicationThread(Nati
We ONLY get this error in our productive environment, not on any test
installations, so this might be a problem regarding to work load or
anything that is caused by "something the users in production do other
than our test user or developer" we failed to comprehend.
Our productive WAS uses load balancing with 4 servants and 1 control
region. This is almost unique, we provide only one test environment with
2 servants, but even there no such issues were known. Maybe this could
be the main part of the problem...?
Does anyone know if this is a common problem? All I found was just a
hint or two who dealt with similar issues but not exactly the same.
Probably there is a property we can add to our deployment via a
jacl-Script, I don't know.
Any help or ideas are highly appreciated.
Best regards in advance,
Frank