GWT RequestFactory с Objectify: ошибка ServerFailure возвращается при запуске запроса - PullRequest
0 голосов
/ 23 января 2012

Я пытаюсь настроить Android-проект App Engine на Eclipse.Я использую Objectify вместо JPA и следую примеру Turbocharge для настройки моей базовой инфраструктуры (используя слой DAO).

В настоящее время я работаю над веб-сайтомно у меня возникают проблемы с сохранением сущностей на сервере разработки: мои запросы возвращают ошибку ServerFailure в методе onFailure () Receivers.Но на самом деле не дает никаких подсказок о том, почему это так (все переменные равны нулю).

Любая помощь будет принята с благодарностью!

Вот мой класс EntryPoint:

public class Manager implements EntryPoint {
private static final Logger log = Logger.getLogger(Manager.class.getName());
private final EventBus eventBus = new SimpleEventBus();
private ManagerRequestFactory rf = GWT.create(ManagerRequestFactory.class);

@Override
public void onModuleLoad() {
    GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {

        @Override
        public void onUncaughtException(Throwable e) {
            log.finest("uncaught exception: ");
            e.printStackTrace();
        }
    });

    rf.initialize(eventBus);
    log.setLevel(Level.FINE);   
    PersonRequest personRequest = rf.personRequest();

    // Populate the database with sample data
    PersonProxy person = personRequest.create(PersonProxy.class);

    person.setFirstName("John1");
    person.setLastName("Doe");
    person.setEmail("jd@gmail.com");
    person.setMainPhone("215-555-1212");
    personRequest.saveAndReturn(person).fire(new Receiver<PersonProxy>(){

        @Override
        public void onSuccess(PersonProxy response) {
            log.info("got response: " + response.getFirstName());

        }

        @Override
        public void onFailure(ServerFailure error) {
            log.info("Server Failure type: " + error.getExceptionType());
            log.info("Failure message: " + error.getMessage());
            log.info("Stack Trace: " + error.getStackTraceString());
            log.info(error.isFatal() ? "error is fatal" : "error is not fatal");
            super.onFailure(error);
        }
    });

Я следовал за кодом в режиме отладки через стеки к точке, где он возвращает ошибку.Вот стек

Поток демона [Сервер кода для менеджера из Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 535.7 (KHTML, как Gecko) Chrome / 16.0.912.75 Safari / 535.7 on http://127.0.0.1:8888/manager/hosted.html?manager @ d6: JVCMo.q: W, $ wW] (Приостановлено (исключение UmbrellaException))

AbstractRequestContext$StandardPayloadDialect.processPayload(Receiver<Void>, String) line: 387  
AbstractRequestContext$5.onTransportSuccess(String) line: 1108  
DefaultRequestTransport$1.onResponseReceived(Request, Response) line: 136   
Request.fireOnResponseReceived(RequestCallback) line: 287   
RequestBuilder$1.onReadyStateChange(XMLHttpRequest) line: 395   
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]  
NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available   
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available   
Method.invoke(Object, Object...) line: not available    
MethodAdaptor.invoke(Object, Object...) line: 103   
MethodDispatch.invoke(JsValue, JsValue[], JsValue) line: 71 
OophmSessionHandler.invoke(BrowserChannelServer, BrowserChannel$Value, int, BrowserChannel$Value[]) line: 172   
BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer$SessionHandlerServer) line: 337  
BrowserChannelServer.invokeJavascript(CompilingClassLoader, JsValueOOPHM, String, JsValueOOPHM[], JsValueOOPHM) line: 218   
ModuleSpaceOOPHM.doInvoke(String, Object, Class<?>[], Object[]) line: 136   
ModuleSpaceOOPHM(ModuleSpace).invokeNative(String, Object, Class<?>[], Object[]) line: 561  
ModuleSpaceOOPHM(ModuleSpace).invokeNativeObject(String, Object, Class<?>[], Object[]) line: 269    
JavaScriptHost.invokeNativeObject(String, Object, Class<?>[], Object[]) line: 91    
Impl.apply(Object, Object, Object) line: not available  
Impl.entry0(Object, Object, Object) line: 213   
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]  
NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available   
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available   
Method.invoke(Object, Object...) line: not available    
MethodAdaptor.invoke(Object, Object...) line: 103   
MethodDispatch.invoke(JsValue, JsValue[], JsValue) line: 71 
OophmSessionHandler.invoke(BrowserChannelServer, BrowserChannel$Value, int, BrowserChannel$Value[]) line: 172   
BrowserChannelServer.reactToMessages(BrowserChannelServer$SessionHandlerServer) line: 292   
BrowserChannelServer.processConnection() line: 546  
BrowserChannelServer.run() line: 363    
Thread.run() line: not available    

И здесь у меня есть снимок переменных для ответа и ошибки:

response    ResponseMessageAutoBean$1  (id=566) 
    this$0  ResponseMessageAutoBean  (id=581)   
        data    JsonSplittable  (id=583)    
            array   null    
            bool    null    
            isNull  false   
            number  null    
            obj JSONObject  (id=597)    
            reified HashMap<K,V>  (id=598)  
            string  null    
        factory MessageFactoryImpl  (id=584)    
            creatorMap  JavaScriptObject$  (id=608) 
            enumToStringMap HashMap<K,V>  (id=609)  
            stringsToEnumsMap   HashMap<K,V>  (id=610)  
        frozen  false   
        shim    ResponseMessageAutoBean$1  (id=566) 
            this$0  ResponseMessageAutoBean  (id=581)   
                data    JsonSplittable  (id=583)    
                factory MessageFactoryImpl  (id=584)    
                frozen  false   
                shim    ResponseMessageAutoBean$1  (id=566) 
                tags    null    
                usingSimplePeer true    
                wrapped ResponseMessageAutoBean$2  (id=587) 
        tags    null    
        usingSimplePeer true    
        wrapped ResponseMessageAutoBean$2  (id=587) 

causes  HashSet<E>  (id=570)    
    [0] RuntimeException  (id=576)  
        cause   RuntimeException  (id=576)  
        detailMessage   "Server Error: null" (id=579)   
        stackTrace  null    

1 Ответ

0 голосов
/ 23 января 2012

Эта ошибка означает, что на сервере произошла ошибка, следовательно, «Ошибка сервера: пусто» - возникла исключительная ситуация, но с ней не было связано ни одного сообщения для отправки клиенту. Исходя из вашего кода, это, вероятно, в методе saveAndReturn на сервере. Попробуйте пройти туда или окружить тело метода try / catch, чтобы получить ошибку. Журнал вашего сервера может пролить больше света на проблему, если при возникновении ошибок используется достаточное количество журналов.

...