GWT Super Dev Mode RPC 404
Я пытаюсь начать работу с режимом Super Dev. У меня запущен режим Super Dev, и у меня есть веб-сервер, обслуживающий мою основную HTML-страницу, где я могу сделать "Режим Dev включен" и перекомпилировать модуль. Теперь я пытаюсь получить эту страницу для доступа к моим сервлетам RequestFactory и RPC. Я запустил обычный режим разработки, и сервлеты доступны по адресу localhost:8888/gwtRequest. Итак, теперь у меня работает три сервера:
http://localhost:9876/ - GWT Code Server
http://localhost:8080/ - Mongoose web server serving /war directory
http://localhost:8888/ - GWT Dev Mode running servlets
Как указать мое приложение на правильный контейнер сервлета? И все ли эти серверы необходимы? Я получаю 404 прямо сейчас, потому что он смотрит на http://localhost:8080/gwtRequest
,
Вот фрагмент файла web.xml:
<servlet>
<servlet-name>requestFactoryServlet</servlet-name>
<servlet-class>com.example.server.util.ExampleRequestFactoryServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>requestFactoryServlet</servlet-name>
<url-pattern>/gwtRequest</url-pattern>
</servlet-mapping>
В прошлом, есть ли способы сделать это менее запутанным? Может быть, какая-то новая функция решает некоторые из этих головных болей? Я надеюсь настроить других разработчиков со средой, как только я знаю, как! И, надеюсь, не усложнит продвижение в производство (то есть, надеюсь, минимальные изменения конфигурации / кода).
Спасибо!
1 ответ
Вам нужно только 2 сервера:
- тот, который обслуживает ваши статические файлы и серверный код (сервлеты). Это включает в себя версию вашего приложения, скомпилированную для JavaScript (вам не нужно часто обновлять ее!). Это может быть сервер, который встроен в DevMode, но также может быть автономный Jetty или Tomcat, или что-то подобное, или такие вещи, как tomcat7-maven-plugin или jetty-maven-plugin в Maven или плагин jetty в Gradle.
- CodeServer SuperDevMode
Обратите внимание, что если вы используете GWT-RPC, вы захотите запустить свой сервер с gwt.codeserver.port
системное свойство, установленное на порт CodeServer (при условии, что они находятся на одной машине). Таким образом, когда ваш браузер (который запускает более свежий код на стороне клиента, чем тот, который вы скомпилировали в JS и развернули на своем сервере) общается с вашим сервлетом, тот загрузит политику сериализации GWT-RPC из CodeServer. В противном случае GWT-RPC, скорее всего, потерпит неудачу с IncompatibleRemoteServiceException
,
Смотрите также /questions/37773094/rezhim-super-dev-v-gwt/37773104#37773104