2014-12-29 3 views
0

Я хочу разделить пакеты для интерфейса и внутренней поддержки моего приложения GWTP. В настоящее время мой доступ к UI бэкенд с использованием Rest отправки, сконфигурированный как это:Доступ к удаленному сервису с использованием отправки GWTP Rest Dispatch

bindConstant().annotatedWith(RestApplicationPath.class).to("/MyProject/api"); 

Я хочу получить доступ к удаленной службы с помощью LOCALHOST UI (работает GWT приложение с помощью Eclipse Plugin). Я изменил эту строку на:

bindConstant().annotatedWith(RestApplicationPath.class).to("http://my-app.appspot.com/MyProject/api"); 

Использование этого вызова успешно достигает сервера (я могу видеть это в журналах Appengine), но интерфейс всегда возвращается код состояния 0.

Что случилось с выше настройки? Нужно ли мне что-то делать для доступа к удаленной службе с помощью GWT ui?

ответ

0

Если вы хотите иметь решение, которое работает как на локальном хосте/App Engine, вы хотите использовать что-то вроде этого:

import com.google.gwt.core.client.GWT; 
import com.google.gwt.inject.client.AbstractGinModule; 
import com.google.inject.Provides; 
import com.gwtplatform.dispatch.rest.client.RestApplicationPath; 
import com.gwtplatform.dispatch.rest.client.gin.RestDispatchAsyncModule; 

public class ServiceModule extends AbstractGinModule { 
    @Override 
    protected void configure() { 
     install(new RestDispatchAsyncModule.Builder().build()); 
    } 

    @Provides 
    @RestApplicationPath 
    String getApplicationPath() { 
     String baseUrl = GWT.getHostPageBaseURL(); 
     if (baseUrl.endsWith("/")) { 
      baseUrl = baseUrl.substring(0, baseUrl.length() - 1); 
     } 

     return baseUrl + "/MyProject/api"; 
    } 
} 

Строка, возвращаемая getApplicationPath будет привязан к @RestApplicationPath и использоваться бесшовно по редизайну GWTP.

В вашем случае строка будет разрешена до http://localhost:8080/MyProject/api или "http://my-app.appspot.com/MyProject/api" в зависимости от приложения, выполняемого локально или в App Engine.

+0

Мое приложение прекрасно работает (как appengine, так и localhost), используя «bindConstant(). AnnotatedWith (RestApplicationPath.class) .to («/MyProject/api »); установка. Я хочу запустить UI на рабочем столе (localhost) и получить доступ к службе, запущенной на машинах с приложением. –

+0

О, я понимаю, что вы сейчас имеете в виду. Каков код состояния, возвращаемый сервером? Я понимаю, что ваше приложение GWT получает статус 0, но является ли он фактическим кодом HTTP, на который отвечает ваше приложение GAE? Если на пример ваш сервер отвечает 200 OK, а ваше приложение GWT интерпретирует ответ как код 0, тогда это может быть другой проблемой. – spg

+0

Проблема была в том, что CORS не был включен правильно. См. Эту тему: https://groups.google.com/forum/#!topic/gwt-platform/RrSOBeaqcEc –

Смежные вопросы