GWT RPC 上的错误 404

Posted

技术标签:

【中文标题】GWT RPC 上的错误 404【英文标题】:Error 404 on GWT RPC 【发布时间】:2012-03-28 08:36:45 【问题描述】:

我使用以下代码编写了一个快速 GWT 应用程序:

我的任务服务

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

问题似乎是 GWT 在发布之前没有重命名模块,我看一下 RemoteServiceRelativePath 注释 documentation 它将 servlet 路径定义为 GWT.getModuleBaseURL() + value(),即 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>

【讨论】:

感谢 ITomas,错误实际上已经消失,但现在我有了一个新错误: 原因:org.datanucleus.exceptions.ClassNotPersistableException:类“com.google.gwt.mytasks.server.Task”是不可持久的。这意味着它要么没有被增强,要么文件的增强版本不在 CLASSPATH 中(或者被未增强的版本隐藏),或者找不到该类的元数据/注释。

以上是关于GWT RPC 上的错误 404的主要内容,如果未能解决你的问题,请参考以下文章

GWT Servlet 错误 com.google.gwt.user.client.rpc .StatusCodeException: Tomcat 服务器上的 404

GWT RPC“未找到 404”错误。如何让 RPC 在您自己的 Apache 服务器上工作?

状态码异常 (com.google.gwt.user.client.rpc.StatusCodeException: 404 <html>)

GWT RPC 失败调用

RPC 上的 GWT 序列化

调用 RPC 时出错 - GWT,404 服务器响应状态为 404(未找到)