GWT RPC извикването не връща транзакция след изключение по време на изпълнение

Все още не познавам GWT толкова дълбоко, колкото искам. Така че бих искал да попитам някой, който познава GWT добре.

Имам проблем с транзакция за връщане назад в GWT 2.3. Да речем, GWT прави RPC повикване на услуга и ще бъде хвърлено NullPointerException. Доколкото виждам сега, внедряването на doUnexpectedFailure в клас AbstractRemoteServiceServlet не хвърля отново никакво изключение - то просто нулира отговора и изключение за регистриране. Освен това документацията за този метод казва, че трябва да отменя този метод, за да се справя с неочаквано изключение в GWT. Някой занимавал ли се е с този проблем? Някой отменил ли е doUnexpectedFailure? Как мога да коригирам това?

Благодаря за всеки коментар предварително и се извинявам за моя английски!


person Dedyshka    schedule 27.11.2013    source източник
comment
транзакцията, която имаш предвид, транзакцията на JPA ли е?   -  person André    schedule 27.11.2013


Отговори (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 не е проверено изключение.

person El Hoss    schedule 27.11.2013
comment
наименувано изключение - имахте предвид проверено изключение? - person Dedyshka; 27.11.2013
comment
@ElHoss защо имаш опит/улов в метода onFailure? Можете да направите if (caught instanceof NullPointerException) { //Handle NPE } - person Churro; 27.11.2013
comment
Всяко изключение, което не е уловено в блока try/catch, ще бъде уловено от UncaughtExceptionHandler - дефиниран f. д. във вашата входна точка. Например, ако вашето извикване на услуга хвърли NotAuthorizedException, това изключение ще бъде обработено от манипулатор на изключения gloabl. Разбира се, можете също да използвате оператор if и да хвърлите изключението в case else. Това ще бъде същото. - person El Hoss; 28.11.2013