jetty设置错误处理程序

时间:2015-08-05 08:39:07

标签: java spring jetty

在将错误处理程序设置为jetty时遇到了一些问题:

我创建了自己的错误处理程序:

public class ServerErrorPageErrorHandler extends ErrorPageErrorHandler {
@Override
protected void writeErrorPageBody(HttpServletRequest request, Writer writer, int code, String message, boolean showStacks)
        throws IOException
{
    String uri= request.getRequestURI();

    writeErrorPageMessage(request,writer,code,message,uri);
    if (showStacks)
        writeErrorPageStacks(request,writer);
    writer.write("<hr><i><small>Powered by OWN-SERVER://</small></i><hr/>\n");
}

}

并将其设置在文件'jett-web.xml'中,该文件位于'/ webapp / WEB-INF /'

文件夹中
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/</Set>

<Set name="errorHandler">
    <New class="com.mobile.service.handlers.ServerErrorPageErrorHandler"/>
</Set></Configure>

当jetty启动时,它没有为类WebAppContext设置setErrorHandler的方法,(我在其父类ErrorHandler中找到了setErrorHandler方法,所以我认为它确实意味着)

然后创建一个文件'error-handler-context.xml'并填写文件:

<Configure class="org.eclipse.jetty.server.handler.ContextHandler">
  <Set name="contextPath">/</Set>   
  <Set name="errorHandler">
     <New class="com.mobile.service.handlers.ServerErrorPageErrorHandler"/>
   </Set> 
</Configure>

然后jetty成功启动,但错误处理程序没有效果。

我只是想将错误页面中显示的消息“由码头供电”更改为“由自己的服务器供电”。

我不想创建新的错误页面。

那么如何实现呢?

我改变了配置文件:

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
   <Set name="contextPath">/</Set>
      <Call name="setErrorHandler">
        <Arg>
            <New class="com.hp.mobile.service.handlers.ServerErrorPageErrorHandler"/>
       </Arg>
     </Call>

</Configure>

在码头启动后,仍然会说NoSuchMethod'setErrorHanlder'异常,

我调试它,得到例外:

“java.lang.illegalargumentexception:argument type mismatch”

在“TypeUtil.java”中的method.invoke(obj,arg)

setErrorHandler的参数是ErrorHandler类,

就我而言,它是从ErrorHandler扩展而来的,

那为什么会发生?

BTW:我还将类ServerErrorPageErrorHandler更改为从ErrorHandler扩展,它也不起作用。

0 个答案:

没有答案