GWT проблема Tomcat для вызова RPC - PullRequest
2 голосов
/ 13 апреля 2011

GWT RPC-вызов не работает при развертывании моего файла войны в TOMCAT (tomcat / webapps / ROOT / war).

Это дает мне ошибку:

запрашиваемый ресурс (/ war / myproject / call) не является имеется.

Если я изменю структуру каталогов, а затем разверну непосредственно содержимое war (не самого каталога war), например (tomcat / webapps / ROOT / project.html, project.css, project и т. Д.) ) тогда это работает.

Может кто-нибудь объяснить, что происходит?

Я думаю, что проблема может быть в:

<servlet>
<servlet-name>callServlet</servlet-name>
<servlet-class>com.myproject.server.dao.Call</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>callServlet</servlet-name>
<url-pattern>/myproject/call</url-pattern>
</servlet-mapping>

Ответы [ 3 ]

4 голосов
/ 13 апреля 2011

Дело в том, что на одном сервере Tomcat может быть развернуто несколько приложений, каждое в своем так называемом контексте . Приложения развертываются в папке webapps, и каждая папка сопоставляется с одним context , тогда как папка ROOT используется по умолчанию (без контекста).

Чтобы получить доступ к приложению в Tomcat, вы указываете контекст после URL. Например, если у вас есть приложение (контекст) Test в папке webapps/Test, вы получите к нему доступ следующим образом:

http://localhost:8080/Test

Но приложения в папке ROOT не имеют контекста и доступны, просто перейдя на localhost:8080. И это ваш случай. Tomcat ищет ваше приложение непосредственно в папке ROOT, но ваше приложение находится в папке ROOT/war. Другими словами, вызов RPC предполагает, что папка myproject находится в папке ROOT, а не в папке ROOT/war. Вот почему это не работает.

Если вы все еще хотите, чтобы ваша папка war находилась в папке ROOT, вам придется изменить url-pattern на /war/myProject/call.

1 голос
/ 13 апреля 2011

Ну, я нашел решение, оно было связано со способом работы Tomcat.

  1. Откройте военный каталог вашего проекта
  2. Выберите все файлы (html / jsp, изображения, WEB-INF и т. Д ...)
  3. Сжатие всех файлов в один проект. Архив zip
  4. Переименуйте project.zip в project.war
  5. Скопируйте project.war в Tomcat / webapps /
  6. Перезагрузить сервер Tomcat
  7. Теперь вы заметите в каталоге webapps, что project.war распакован в каталог проекта, если вы откроете его, вы найдете все содержимое .war (html / jsp, images, WEB-INF и т. Д.)
  8. Получите доступ отсюда http://localhost/project или http://localhost/project/index.html или index.jsp.

Ошибка была: я сжимал только каталог war (не его содержимое) в project.war.

0 голосов
/ 13 апреля 2011

похоже, сервлет не инициализируется, вы пытаетесь изменить тег SERVLET как то есть добавить тег

<load-on-startup>1</load-on-startup>

этот тег гарантирует, что сервлет должен быть загружен

 <servlet>
 <servlet-name>callServlet</servlet-name>
 <servlet-class>com.myproject.server.dao.Call</servlet-class>
 <load-on-startup>1</load-on-startup>
 </servlet> 

надеюсь, это будет работать

...