GWT: отображение URL сервлета дает ошибку 404 - PullRequest
7 голосов
/ 12 июля 2011

Я прочитал другие вопросы о GWT Servlet, но мне все еще не удается решить мою проблему. Мой пакет называется «Карты», и у него есть служба MyService (которая была настроена в соответствии с руководством GWT). Файл web.xml содержит следующее:

<servlet>
    <servlet-name>MyServiceImpl</servlet-name>
    <servlet-class>com.xerox.maps.maps.server.MyServiceImpl</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>MyServiceImpl</servlet-name>
    <url-pattern>/Maps/service</url-pattern>
</servlet-mapping>

В MyService у меня есть строка:

@RemoteServiceRelativePath("service")
public interface MyService extends RemoteService { ...

Однако, когда я пытаюсь сделать вызов RPC, выдается ошибка. Детали ошибки говорят, что это ошибка 404 HTTP. Как я могу это исправить, чтобы убедиться в правильности сопоставления?

Редактировать 7,27

MyService.java содержит аннотацию:

@RemoteServiceRelativePath("service")

И web.xml содержит:

<servlet-name>MyServiceImpl</servlet-name>
<url-pattern>/com.x.maps.Maps/service</url-pattern>

Если я следую XHR с FireBug, это показывает, что есть вызов com.x.maps.Maps

Ответы [ 4 ]

5 голосов
/ 12 июля 2011

404 Не найден, обычно генерируется, когда GWT неверно определяет путь к конечной точке сервиса.Попробуйте удалить @RemoteServiceRelativePath("service"), перекомпилировать и проверить, если это не сработает, выясните конечную точку URL-адреса службы вручную (нажав вероятные пути из браузера, пока ошибка не изменится на 500 внутренних ошибок), а затем укажите правильный путь в качестве аргумента для@RemoteServiceRelativePath("correct/path").Несколько попыток, которые я бы попробовал сразу, это @RemoteServiceRelativePath("/Maps/service") и @RemoteServiceRelativePath("Maps/service") без косой черты

4 голосов
/ 04 июня 2012

Согласно этому уроку: https://developers.google.com/web-toolkit/doc/latest/tutorial/RPC

Отображение сервлета должно состоять из модуля "rename-to" и службы "RemoteServiceRelativePath". Итак, если у вас есть, в вашем файле * .gwt.xml, следующая строка:

<module rename-to='XXX'>

А в вашем файле * Service.java есть следующая строка:

@RemoteServiceRelativePath("YYY")

Затем в вашем файле "web.xml" должны быть следующие строки:

  <servlet-mapping>
    <servlet-name>...servlet-name>
    <url-pattern>/XXX/YYY</url-pattern>
  </servlet-mapping>
1 голос
/ 06 августа 2011

У меня была та же проблема, но я решил ее, изменив шаблон URL сервлета в web.xml

Попытайтесь указать в своем файле web.xml путь к каталогу, где генерируется ваш модуль JavaScript GWT, за WEB-INF / deploy. в моем случае:

<url-pattern>/gwtmodulemain/selection</url-pattern>

Вы также можете переименовать имя вашего модуля в файле gwt.xml:

<module rename-to='gwtmodulemain'>

чтобы вы могли ссылаться на свой модуль из HTML следующим образом:

<script type="text/javascript" language="javascript" src="gwtmodulemain/gwtmodulemain.nocache.js"></script>

Удачи!

1 голос
/ 27 июля 2011

Новый ответ после всех комментариев:

Круто, вы добились прогресса! Вы переходите по этому URL -

http://127.0.0.1:8888/com.x.maps.maps.Maps

С этими данными POST я предполагаю - /%7C98544A4AED8C7D42E80C55859E9CEC4C%7Ccom.x.maps.maps.client.MyService%7CreadFile%7Cjava.lang.String/2004016611%7CPrinterList.xls%7C1%7C2%7C3%7C4%7C1%7C5%7C6%7C

Вот в чем проблема, ваш сервлет отображается для ответа на запросы XHR, поступающие на <url-pattern>/Maps/service</url-pattern>, но вместо этого вы нажимаете /com.x.maps.maps.Maps. Следовательно вы получаете 404 путь не найден код состояния.

Alter the url-pattern on the server-side web.xml to match what the browser is making,
OR
Alter the GWT code using the RemoteServiceRelativePath annotation to make the request to /Maps/service instead of to /com.x.maps.maps.Maps
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...