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_FOUNDRequestURI=/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>)