Ошибка 404 на GWT RPC - PullRequest
       22

Ошибка 404 на GWT RPC

1 голос
/ 28 марта 2012

Я написал быстрое приложение GWT со следующим кодом:

MyTaskService

package com.google.gwt.mytasks.client;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

@RemoteServiceRelativePath("taskAction")
public interface MyTasksService extends RemoteService {
    public void addTask(String title, String description);
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

    <!-- Default page to serve -->
    <welcome-file-list>
        <welcome-file>MyTasks.html</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>MyTasksService</servlet-name>
        <servlet-class>com.google.gwt.mytasks.server.MyTasksServiceImpl</servlet-class>
    </servlet>

    <servlet-mapping>
  <servlet-name>MyTasksService</servlet-name>
  <url-pattern>/mytasks/taskAction</url-pattern>
</servlet-mapping>

</web-app>

Модуль .gwt.xml

<module rename-to='mytasks'>
    <inherits name="com.google.gwt.user.User"/>
    <inherits name="com.google.gwt.user.theme.standard.Standard"/>
    <entry-point class="com.google.gwt.mytasks.client.MyTasks"/>

<!-- Specify the paths for translatable code                    -->
  <source path='client'/>
  <source path='shared'/>



</module>

Каждый раз, когда я нажимаю кнопку отправки, я получаю следующую ошибку:

com.google.gwt.user.client.rpc.StatusCodeException: 404 Ошибка 404 не найдено

ОШИБКА HTTP: 404

NOT_FOUND

RequestURI = / com.google.gwt.mytasks.MyTasks / taskAction

Работает на Причал: //





















1 Ответ

4 голосов
/ 28 марта 2012

Похоже, проблема в том, что GWT не переименовывает модуль перед публикацией. Если вы посмотрите аннотацию RemoteServiceRelativePath Документация Он определяет путь сервлета как GWT.getModuleBaseURL () + value ()будучи значением () значение, данное аннотации.Одним из простых решений, которое может сработать, было бы определение отображения сервлета на пути, который просматривает модуль.

Вместо:

<servlet-mapping>
  <servlet-name>MyTasksService</servlet-name>
  <url-pattern>/mytasks/taskAction</url-pattern>
</servlet-mapping>

Использование:

<servlet-mapping>
  <servlet-name>MyTasksService</servlet-name>
  <url-pattern>/com.google.gwt.mytasks.MyTasks/taskAction</url-pattern>
</servlet-mapping>
...