我在这个网站上搜索了这个问题的答案,但找不到解决方案.我做的是我只是压缩我的eclipse GWT应用程序项目中的war目录,然后将其重命名为.war然后将其删除到tomcat webapps文件夹.当我运行Web应用程序时,第一个屏幕成功显示但是当我在我的src代码中调用servlet时,它给了我tomcat服务器找不到的资源.我确定我已经在web.xml文件中添加了servlet的条目,并且当我在eclipse gwt dev模式下运行它时应用程序运行良好.某些事情阻止我的servlet(标准servlet而不是GWT RPC servlet)被tomcat找到并执行.可能是什么原因?
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>OAuth</servlet-name>
<servlet-class>org.goauth.server.OAuthServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>OAuth</servlet-name>
<url-pattern>/goauth/oauth</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>OAuthCallback</servlet-name>
<servlet-class>org.goauth.server.OAuthCallbackServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>OAuthCallback</servlet-name>
<url-pattern>/goauth/callback</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>service</servlet-name>
<servlet-class>org.goauth.server.OAuthServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>service</servlet-name>
<url-pattern>/goauth/service</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>OAuthConfirm</servlet-name>
<servlet-class>org.goauth.server.OAuthConfirmServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>OAuthConfirm</servlet-name>
<url-pattern>/goauth/confirm</url-pattern>
</servlet-mapping>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>GOAuth.html</welcome-file>
</welcome-file-list>
</web-app>
Run Code Online (Sandbox Code Playgroud)
tomcate日志文件中没有任何内容浏览器中唯一的错误是:
HTTP Status 404 - /goauth/oauth
type Status report
message /goauth/oauth
description The requested resource (/goauth/oauth) is not available.
Apache Tomcat/6.0.20
Run Code Online (Sandbox Code Playgroud)
我发现了问题:为了调用我的 servlet,我调用了以下格式的 url:"/goauth/OAuth"
这适用于开发模式下的 eclipse gwt 插件,但当我将 war 部署到 tomcat 服务器时则不行。解决方案是我的 url 指向我的 servlet 的形式应该是:
String href = GWT.getHostPageBaseURL()+"goauth/OAuth";
Run Code Online (Sandbox Code Playgroud)
所以我们需要通过在 servlet url 前面加上 GWT.getHostPageBaseURL() 来告诉 tomcat 完整的 url。