Я не уверен, решит ли это всю проблему, потому что вы говорите, что она уже работает в первый раз, когда вы делаете вызов - но вы можете попробовать следующее при создании serviceAsync на стороне клиента:
MyServiceAsync service = GWT.create(MyService.class);
ServiceDefTarget serviceDefTarget = (ServiceDefTarget) service;
serviceDefTarget.setServiceEntryPoint(
"http://localhost:8080/foo/bar/00_00_00/myapp/MyApp/");
/* ^^ Use your full servlet path here ^^ */
Если вы удивляетесь, зачем вам явно приводить это значение к ServiceDefTarget
- вот объяснение из Javadoc ServiceDefTarget:
/**
* An interface implemented by client-side RPC proxy objects. Cast the object
* returned from {@link com.google.gwt.core.client.GWT#create(Class)} on a
* {@link RemoteService} to this interface to initialize the target URL for the
* remote service.
*/
(я предполагаю, что вы загружаете свою html-страницу из "http://localhost:8080",, иначе это не получится из-за той же политики происхождения.)
Другая проблема, которую я могу себе представить, может быть связана с кэшированием в вашем прокси - поэтому, возможно, сначала попробуйте отключить любое кэширование, а затем повторно включить его только для ресурсов с "*.cache.*"
именами файлов (см. Также: Идеальный HTTP заголовки управления кэшем для различных типов ресурсов ).