GWT RPC上的错误404

时间:2012-03-28 08:36:46

标签: gwt-rpc

我用以下代码编写了一个快速的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 个答案:

答案 0 :(得分:4)

问题似乎是GWT在发布之前没有重命名模块,我看看RemoteServiceRelativePath注释documentation它将servlet路径定义为GWT.getModuleBaseURL()+ value(),是值()给予注释的值。一个可能有效的简单解决方案是在模块正在查看的路径上定义servlet映射。

而不是:

<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>