java – GWT服务异常记录的最佳实践
发布时间:2020-12-14 05:14:02 所属栏目:Java 来源:网络整理
导读:我决定将日志系统添加到我的gwt服务层.首先我想记录从该层抛出的所有异常.我有一个类似于 Spring的ServletDispatcher的对象,它调用其他服务.我以为我可以在那里添加日志记录,但是我意识到GWT服务会在ServletResponse中包含检查的异常,并将其取消选中为Unexpe
我决定将日志系统添加到我的gwt服务层.首先我想记录从该层抛出的所有异常.我有一个类似于
Spring的ServletDispatcher的对象,它调用其他服务.我以为我可以在那里添加日志记录,但是我意识到GWT服务会在ServletResponse中包含检查的异常,并将其取消选中为UnexpectedException.
有人可以分享他的经验吗?记录所有GWT服务的检查和未检查的异常的最佳方式是什么? 我发现解决方案建议扩展RemoteServiceServlet并覆盖默认异常流.但是我觉得这个解决方案太耗时了.居民知道任何更容易的变种吗? 解决方法
在服务器端,我们有一个RemoteServiceServlet的子类,用于所有服务实现.你提到这似乎是耗时的,但是这是代码的样子.你做一次,你完成了.
@Override protected void doUnexpectedFailure(Throwable t) { t.printStackTrace(System.err); super.doUnexpectedFailure(t); } 注意:我们实际上并没有将它发送到System.err,你可能也不应该这样做,但是你会得到这个想法. 在客户端,我们使用AsyncCallback的子类AsyncSuccessCallback.它大部分的RPC调用统一处理onFailure案例.我们的大部分回调代码都可以处理onSuccess事件,知道onFailure被处理.它也提供了一个单一的地方来更改此实现. public abstract class AsyncSuccessCallback<T> implements AsyncCallback<T> { public void onFailure(Throwable t) { handleException(t); } protected void handleException(Throwable t) { Window.alert(t.getMessage()); } } 注意:我们实际上并没有使用Window.alert,而是再次得到想法.在这种情况下我们所做的是显示一个GWT DialogBox,该对话框显示一个窗体,该表单对接受错误报告的不同服务器执行POST.该表单允许用户在发生错误时键入他们正在做什么的描述. 在客户端,如果要获取堆栈跟踪,则需要编写一些额外的代码: // for lineEnding,use "<br>" for HTML,"n" for text public static final String getStackTrace(Throwable t,String lineEnding) { Object[] stackTrace = t.getStackTrace(); if (stackTrace != null) { StringBuilder output = new StringBuilder(); for (Object line : stackTrace) { output.append(line); output.append(lineEnding); } return output.toString(); } else { return "[stack unavailable]"; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |