【问题标题】:GWT RPC call doesn't rollback transaction after runtime exception运行时异常后 GWT RPC 调用不回滚事务
【发布时间】:2013-11-27 09:34:57
【问题描述】:

我对 GWT 的了解还没有我想要的那么深。所以想问问熟悉GWT的人。

我在 GWT 2.3 中遇到回滚事务问题。比如说,GWT 进行服务的 RPC 调用,会抛出NullPointerException。就我现在所见,doUnexpectedFailure 在类 AbstractRemoteServiceServlet 中的实现不会重新引发任何异常 - 它只是重置响应和日志记录异常。此外,该方法的文档说我应该重写此方法以处理 GWT 中的意外异常。有人处理过这个问题吗?有没有人覆盖doUnexpectedFailure?我该如何纠正呢?

提前感谢您的任何评论,对不起我的英语!

【问题讨论】:

  • transaction 你的意思是JPA交易吗?

标签: java gwt transactions rpc gwt-rpc


【解决方案1】:

看一下手册:

http://www.gwtproject.org/doc/latest/tutorial/RPC.html

说,您的客户端中有一个服务:

private MyServiceAsync service= GWT.create(MyService.class);

现在,服务已创建

您的客户端中的调用如下所示:

// Set up the callback object.
AsyncCallback<MyModel> myCallback = new AsyncCallback<MyModel>() {
  public void onFailure(Throwable caught) {
    try {
      throw caught;
    } catch (NullPointerException e) {
       // TODO: Handle your NPE 
    }
  }

  public void onSuccess(MyModelresult) {
    // everything is ok
  }
};
// Make the call to the stock price service.
service.doSomethingOnTheServer(callback);

在 onFailure 方法中,您可以在客户端处理您的 NPE。调用doUnexpectedFailure-方法,因为您的 NPE 不是已检查异常。

【讨论】:

  • 命名异常 - 你的意思是检查异常吗?
  • @ElHoss 为什么在onFailure 方法中有一个try/catch?你可以做if (caught instanceof NullPointerException) { //Handle NPE }
  • 任何未在 try/catch 块中捕获的异常都将被 UncaughtExceptionHandler - 定义的 f 捕获。 e.在你的入口点。例如,如果您的服务调用引发 NotAuthorizedException,则此异常将由 gloabl 异常处理程序处理。当然,您也可以使用 if 语句并在 else 情况下抛出异常。这将是相同的。
猜你喜欢
  • 1970-01-01
  • 2018-08-09
  • 2015-10-03
  • 2015-03-02
  • 2016-08-14
  • 1970-01-01
  • 2013-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多