【问题标题】:WebSphere equality check failureWebSphere 相等性检查失败
【发布时间】:2013-08-07 06:19:59
【问题描述】:

WebSphere 打印

8/7/13 11:43:47.318 000000AB SystemOut DETAIL 收据为空? = 空

8/7/13 11:43:47.318 000000AB SystemOut DETAIL 错误

8/7/13 11:43:47.318 000000AB com.ibm.ws.webcontainer.servlet.ServletWrapper 严重的 com.ibm.ws.webcontainer.servlet.ServletWrapper 服务 SRVE0068E:服务方法之一引发了异常应用程序 [MyWar_war] 中的 servlet [ReceiptReportServlet]。创建异常:[java.lang.NullPointerException 在 servlet.ReceiptReportServlet.doGet(ReceiptReportServlet.java:61) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:575) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1227) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:776) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:458) 在 com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) 在 com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1032) 在 com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87) 在 com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:909) 在 com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662) 在 com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200) 在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:459) 在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:526) 在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:312) 在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:283) 在 com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) 在 com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) 在 com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175) 在 com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 在 com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 在 com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) 在 com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) 在 com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) 在 com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) 在 com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1862) ]

而不是

收据为空? = 空

【问题讨论】:

  • 您能否用您的代码和日志的复制/粘贴的 sn-ps 替换屏幕截图?
  • request 未设置。这样做的代码不是您问题的一部分。

标签: java servlets jpa websphere equality


【解决方案1】:

这看起来更像是操作顺序而不是 WAS 的问题。你的打印行

System.out.println("receipt is null? " + receipt == null);

是问题所在。如果收据对象为空或不为空,这不会打印 true 或 false。它所做的是将字符串"receipt is null? " 与收据的.toString() 方法的结果连接起来,然后检查它是否等于null。这就是为什么您看到它只在该行上打印错误。

如果你真的想在那里检查空对象,请在你的空检查周围添加一些适当的 ()。

System.out.println("receipt is null? " + (receipt == null));

这应该像您期望的那样打印 true 或 false。

至于为什么收据在一种环境中为空,而在另一种环境中不为空,这是我们没有足够信息来回答的问题。您的代码 sn-ps 没有向我们显示该对象来自何处或被实例化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2010-12-07
    • 2015-08-09
    • 2015-11-23
    • 1970-01-01
    相关资源
    最近更新 更多