«ОШИБКА HTTP: 500 нет области» при запуске образца GWT «MobileWebApp»

#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 вместе с новыми. Их удаление решило проблему.