Я использую URL-адреса для перехода на разные экраны внутри своего приложения GWT. Например:GWT RPC не работает при запуске приложения из разных URL-адресов
http://127.0.0.1/home
http://127.0.0.1/info/contact-us
http://127.0.0.1/app/index.html
У меня есть сервлет, который служит HTML, содержащий необходимый элемент сценария для GWT (мой GWT имя модуля «приложение»):
<script type="text/javascript" language="javascript" src="/app/app.nocache.html">
</script>
Это работает большое с GWT 2.6.1. В браузере Дев инструментов это можно увидеть, что RPC вызовы сделаны моей RemoteService
в http://127.0.0.1/app/rpc
Проблема заключается в том, когда я повышен до GWT 2.8, RPC вызов конечной точки моего приложения в настоящее время отличается и неправильно, в зависимости от Используемый URL. Например:
http://127.0.0.1/home -> http://127.0.0.1/rpc
http://127.0.0.1/info/contact-us -> http://127.0.0.1/info/rpc
http://127.0.0.1/app/index.html -> http://127.0.0.1/app/rpc
Для указанных выше URL-модуль всегда корректно загружается и выполняется, однако RPCs неудачу в первых двух случаях. только последний URL-адрес позволяет моему приложению делать вызовы RPC.
Конечная точка RPC может быть установлена путем литья прокси-сервера на стороне клиента до ServiceDefTarget
и использования setServiceEntryPoint()
. В следующем порядке:
ourInstance = (MyRemoteServiceAsync)GWT.create(MyRemoteService.class);
ServiceDefTarget serviceDefTarget = (ServiceDefTarget) ourInstance;
serviceDefTarget.setServiceEntryPoint("/app/rpc");
Однако полезная нагрузка запроса по-прежнему содержит ссылку на неправильную базу модуля. Заголовки HTTP, отправленные на запрос RPC имеют неправильные значения также:
X-GWT-Module-Base:http://127.0.0.1/foo/bar/
Есть ли способ заставить механизм RPC клиента использовать правильный URL RPC /app/rpc
? Или, возможно, правильно установить модуль-базу?
ОБНОВЛЕНИЕ 1
Видя такое же поведение в GWT 2.7.
Кроме того, при развертывании в WAR файл <module-hash>.cache.js
не загружается, так как он также запрашивается относительно URL-адреса. Это очень плохо, потому что это означает, что код модуля не будет кэшироваться, так как этот URL-адрес различен каждый раз. Фиксирование должно быть выполнено в селекторе <module>.nocache.js
. Кто-нибудь на самом деле использует GWT с ссылкой на ссылку в реальном мире?
Вы можете сообщить об ошибке для этого изменения разрывного поведения? –
Я могу. Считаете ли вы, что это ошибка или как она была разработана? – TJez
Это может быть что-то в вашем приложении, купить его не по дизайну. –