谁吃了我的例外? (jsp dispatcher.include)

时间:2011-10-28 01:18:31

标签: jsp websphere

我正在使用Websphere作为Application Server实现第三方J2EE应用程序。我在其中一个JSP(callingPage)

中有以下代码
try {
  RequestDispatcher dispatcher = request.getRequestDispatcher(includePage);
  dispatcher.include(request,response);
} catch (Exception Ex) {
  // process the excpetion 
  // and create appropriate response object with body as XML string
}

includePage也是一个JSP页面,当没有异常时,响应应该具有XML主体。在特定情况下,includePage会抛出有效(自定义)的摘要。但是控件不会在callingPage中捕获块。

在检查响应时,我发现响应主体包含一个字符串<HTTP ResponseCode><CustomExceptionType><CustomException.getMessage()>,响应代码为500.由于响应主体不是XML字符串,我们在下游得到解析异常。

我检查了应用程序web.xml,并且没有为代码500指定自定义错误页面。我与Websphere管理员讨论过,他没有多大帮助(他声称他没有做任何具体的实例)。应用程序供应商的支持团队在其Websphere实例中对其进行了测试,并确认其有效。根据它们,它应该是一个Websphere配置。

我对J2EE框架或Websphere的了解有限。我试图搜索现有的查询,但无法找出可能的原因。

3 个答案:

答案 0 :(得分:1)

你可能已经解决了这个问题,但以防万一:

根据http://docs.oracle.com/javaee/6/api/javax/servlet/RequestDispatcher.html

  

包含的servlet无法更改响应状态代码或设置标头;任何改变的尝试都会被忽略。

我怀疑(但我不确定)这就是你的异常丢失的原因。

答案 1 :(得分:1)

通过为Websphere Web容器com.ibm.ws.webcontainer.dispatcherRethrowSER设置自定义属性,解决了该问题。详情请见http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Finfo%2Fexp%2Fae%2Frweb_custom_props.html

答案 2 :(得分:0)

通常为了处理异常,我们在JSP中包含了一个错误页面指令。错误JSP是在发生异常时将转发控件的JSP。不确定它是否适用于您的情况,但可以试一试:http://www.roseindia.net/jsp/simple-jsp-example/exception-handling-in-jsp.shtml

告诉我们是否有效。

-NG

相关问题