#google-app-engine #gwt #jetty
#google-app-engine #gwt #причал
Вопрос:
Я пытаюсь запустить образец приложения GWT 2.4 «MobileWebApp». Я получаю ошибку 500 «Нет области» при попытке запустить приложение в режиме разработки через Eclipse.
Я понимаю, что это проблема с аутентификацией.
Я не знаком с Google App Engine или Jetty, но, посмотрев на web.xml Я вижу, что есть фильтр сервлетов, в котором он использует appengine UserService, предположительно, для перенаправления пользователя в Google для аутентификации.
Я использую:
- Eclipse 3.7 (Indigo SR1)
- Плагин Google для Eclipse 2.4
- m2eclipse
Я включаю выдержку из web.xml ниже. Я не уверен, какая другая информация была бы полезна при диагностике этой проблемы.
<security-constraint>
<display-name>
Redirect to the login page if needed before showing
the host html page.
</display-name>
<web-resource-collection>
<web-resource-name>Login required</web-resource-name>
<url-pattern>/MobileWebApp.html</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>
<filter>
<filter-name>GaeAuthFilter</filter-name>
<!--
This filter demonstrates making GAE authentication
services visible to a RequestFactory client.
-->
<filter-class>com.google.gwt.sample.gaerequest.server.GaeAuthFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>GaeAuthFilter</filter-name>
<url-pattern>/gwtRequest/*</url-pattern>
</filter-mapping>
Ниже приведен вывод в консоли Eclipse:
[WARN] Request /MobileWebApp.html failed - no realm
[ERROR] 500 - GET /MobileWebApp.html?gwt.codesvr=127.0.0.1:9997 (127.0.0.1) 1401 bytes
Request headers
Host: 127.0.0.1:8888
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
Accept: text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Response headers
Content-Type: text/html; charset=iso-8859-1
Content-Length: 1401
Большое спасибо за любой полезный совет!
Редактировать 11.11.11: Я добавил тег Jetty, поскольку он кажется относящимся к этой проблеме.
Комментарии:
1. Обратите внимание, что у нас то же самое без AppEngine: простое наличие
<security-constraint>
приводит к ошибке 500 «no realm» для нас. Есть ли какие-либо рекомендации для этой конкретной ситуации?
Ответ №1:
Если ваш самый первый запрос завершается неудачей, просто получите /MobileWebApp.html страница, тогда это, вероятно, не проблема с аутентификацией. Включен ли у вас GAE для этого проекта (не только для GWT)? Это может быть одной из проблем.
Я где-то читал, что есть два способа отладки приложения в Eclipse, один с помощью run as / webapp, и забыл, какой был другой (я не использую Eclipse). Один из них работает, а другой нет.
Если это не сработает, вы можете попробовать заменить встроенный jetty:
- добавьте параметр GWT: -server com.google.appengine.Инструменты.development.gwt.AppEngineLauncher
- Параметр виртуальной машины: -javaagent:/path_to/appengine-agent.jar
И последний вариант — с -noserver, но тогда вы не сможете отлаживать код на стороне сервера, только содержимое GWT на стороне клиента: сначала запустите jetty с помощью mvn jetty: run, а затем отлаживайте в Eclipse с параметром GWT -noserver.
Ответ №2:
У меня была та же проблема. Наконец, я заметил, что когда я переключился на более новую версию Appengine, старые библиотеки Appengine остались в WEB-INF / lib вместе с новыми. Их удаление решило проблему.