2009-07-29 63 views
3

在WebSphere上request.getHeaderNames方法調用request.getHeaderNames方法調用(第6版SP11),我得到這個例外上的NullPointerException在WebSphere

java.lang.NullPointerException 

      at com.ibm.ws.webcontainer.srt.SRTServletRequest.getHeaderNames(SRTServletRequest.java:345) 

      at .... 

我沒有爲SRTServletRequest源代碼。

有沒有人遇到過這個問題?

+0

您是否嘗試過使用(例如)JD(http://java.decompiler.free.fr/)來反編譯SRTServletRequest?這可能會指向你正確的方向。 – 2009-07-29 09:47:50

+0

你可以給我們一個getHeaderNames()被調用的上下文嗎?例如,它是從`HttpServlet`子類`doPost()`方法直接調用的嗎? – 2009-07-29 09:52:19

回答

3

最後,我已經得到了答案,謝謝大家幫助我。 問題是: 1.開發人員在類字段中保存了一個請求,並且 2.在訪問類級別請求字段時,其他一些線程開始並結束,因此銷燬了call和nullPointer。

1

NPE的一種可能的解釋是here

我不能確定沒有查看WebSphere,但SRTServletRequest.getHeaderNames()中的鏈接報告NPE診斷表明,如果您調用請求對象上的方法已經「超出範圍」,則可能發生此問題。換句話說,在WebSphere容器的生命週期管理已經處理它之後。現在,如果在Spring中使用WebSphere時會發生這種情況,那麼當WebSphere單獨使用時,很可能會發生這種情況。

如果在doPost()中調用getHeaderNames(),那麼您的代碼是否有可能完成了某些操作,導致WebSphere認爲該servlet已完成請求對象?它可能在servlet中或類似於之前觸及請求對象的Filter。

相關問題