将带有 RPC 的 GWT 部署到 tomcat 的问题(可能是 web.xml 问题)

Posted

技术标签:

【中文标题】将带有 RPC 的 GWT 部署到 tomcat 的问题(可能是 web.xml 问题)【英文标题】:Problems with deploying GWT with RPC to tomcat (web.xml problem probably) 【发布时间】:2010-07-22 10:04:41 【问题描述】:

我的使用 mysql 数据库的 gwt 应用程序在调试时在 eclipse 中运行正常。当我在 tomcat 上运行它时,它显示正确,但是当我单击一个生成 RPC 的按钮(执行 servlet 并联系数据库)时,我得到一个错误。我检查了我的 tomcat 日志,单击按钮时看到 404 错误:

0:0:0:0:0:0:0:1 - - [22/Jul/2010:10:32:39 +0200] "GET /Bazica/war/Bazica.html HTTP/1.1" 304 -
0:0:0:0:0:0:0:1 - - [22/Jul/2010:10:32:39 +0200] "GET /Bazica/war/Bazica.css HTTP/1.1" 304 -
0:0:0:0:0:0:0:1 - - [22/Jul/2010:10:32:39 +0200] "GET /Bazica/war/bazica/bazica.nocache.js HTTP/1.1" 304 -
0:0:0:0:0:0:0:1 - - [22/Jul/2010:10:32:39 +0200] "GET /Bazica/war/bazica/    F0C186B415ADBD43522C686552368517.cache.html HTTP/1.1" 304 -
0:0:0:0:0:0:0:1 - - [22/Jul/2010:10:32:39 +0200] "GET /Bazica/war/bazica/gwt/standard/images/hborder.png    HTTP/1.1" 304 -
0:0:0:0:0:0:0:1 - - [22/Jul/2010:10:33:29 +0200] "POST /Bazica/war/bazica/greet HTTP/1.1" 404 1024

我猜这是 web.xml 文件和 url 模式的问题。我想我不明白这个 url 模式,它应该指向哪里?

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>

 <!-- Servlets -->
 <servlet>
 <servlet-name>greetServlet</servlet-name>
 <servlet-class>com.test.baze.server.GreetingServiceImpl</servlet-class>
 </servlet>

 <servlet-mapping>
 <servlet-name>greetServlet</servlet-name>
 <url-pattern>/bazica/greet</url-pattern>
 </servlet-mapping>

 <!-- Default page to serve -->
 <welcome-file-list>
 <welcome-file>Bazica.html</welcome-file>
 </welcome-file-list>

 </web-app>

我的界面有一个注解 RemoteServiceRelativePath("greet"),我认为它是相关的:

package com.test.baze.client;

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

/**
* The client side stub for the RPC service.
*/
@RemoteServiceRelativePath("greet")
public interface GreetingService extends RemoteService 
String greetServer(String name) throws IllegalArgumentException;

我尝试将 url-pattern 更改为我的服务实现 /WEB-INF/classes/com/test/baze/server 的文件夹,但我的应用程序挂起,没有任何消息。 你能帮我改变我的web.xml或某事吗?否则让我的应用程序在 Tomcat 上运行。 Tnx。

【问题讨论】:

【参考方案1】:

如果您使用look at the docs,您的网址格式应该是:

<url-pattern>/module_name/greet</url-pattern>

但是在您的 web.xml 中,您已将模块名称设置为“bazica”。你的 GWT 模块文件(.gwt.xml 文件)中的 renaming the module 是 bazica 吗?如果不是,则必须重命名它或使用 GWT 模块文件的完整路径。

【讨论】:

是的,我将我的模块重命名为“bazica”()。还有什么问题? 我需要在模块描述中添加 行吗? 你能编辑你上面的帖子并添加你的 gwt 模块代码吗?

以上是关于将带有 RPC 的 GWT 部署到 tomcat 的问题(可能是 web.xml 问题)的主要内容,如果未能解决你的问题,请参考以下文章

RPC调用的GWT Tomcat问题

尝试在来自 GWT-RPC 项目的 Tomcat 7 上部署战争

尝试从GWT-RPC项目获取的Tomcat 7上的部署战争

GWT RPC 测试数据库连接

Tomcat 中的 GWT 2.5 应用程序部署?

Tomcat 和 Objectdb(通过 GWT/Rpc):java.lang.NoClassDefFoundError