GWT Void удаленные службы дают сбой, казалось бы, без причины - PullRequest
0 голосов
/ 29 мая 2009

Я работаю над проектом GWT, и у меня есть несколько пустых удаленных служб, которые, кажется, работают нормально, но на стороне клиента, в конечном итоге, запускают метод onFailure(). Никаких исключений не выдается нигде, и ожидаемое поведение наблюдается на серверной части. Я понятия не имею, что может пойти не так. Вот соответствующий код:

Интерфейсы и реализация ...

@RemoteServiceRelativePath("DeleteSearchService")
public interface DeleteSearchService extends RemoteService {
    /**
     * Utility class for simplifying access to the instance of async service.
     */
    public static class Util {
        private static DeleteSearchServiceAsync instance;
        public static DeleteSearchServiceAsync getInstance(){
            if (instance == null) {
                instance = GWT.create(DeleteSearchService.class);
            }
            return instance;
        }
    }

    public void delete(SearchBean search);
}

public interface DeleteSearchServiceAsync {
    public void delete(SearchBean bean, AsyncCallback<Void> callback);
}

public class DeleteSearchServiceImpl extends RemoteServiceServlet implements DeleteSearchService {

    private static final long serialVersionUID = 1L;

    @Override
    public void delete(SearchBean search) {
        try {

            Connection conn = SQLAccess.getConnection();
            String sql = "DELETE FROM `searches` WHERE `id`=?";

            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, search.getSearchId());

            ps.execute();

            sql = "DELETE FROM `searchsourcemap` WHERE `search-id` = ?";

            ps = conn.prepareStatement(sql);
            ps.setInt(1, search.getSearchId());

            ps.execute();

            return;

        } catch (Exception e) {
            // TODO Log error
            e.printStackTrace();
        }
    }
}

Телефонный код ...

private class DeleteListener implements ClickListener {
        public void onClick(Widget sender) {
            DeleteSearchServiceAsync dss = DeleteSearchService.Util.getInstance();

            SearchBean bean = buildBeanFromGUI();

            dss.delete(bean, new AsyncCallback<Void>(){

                //@Override
                public void onFailure(Throwable caught) {
                    // TODO log
                    SearchNotDeleted snd = new SearchNotDeleted();
                    snd.show();
                }

                //@Override
                public void onSuccess(Void result) {
                    SearchDeleted sd = new SearchDeleted();
                    sd.show();
                    searchDef.getParent().removeFromParent();                   
                }

            });
        }
    }

Я знаю, что я придурок для публикации примерно 500 строк кода, но я смотрю на это со вчерашнего дня и не могу понять, где я ошибаюсь. Возможно, второй набор глаз поможет ...

Спасибо, Брайен

1 Ответ

0 голосов
/ 30 мая 2009

LGTM Боюсь.

Используете ли вы хост-режим или полноценный браузер? Вы можете попробовать переключиться и посмотреть, поможет ли это.

Также может помочь прослушивание этого //TODO и выполнение GWT.log при вызове onFailure.

...