在 Tomcat 中作为 ROOT 部署时 RPC/Servlet 不起作用
Posted
技术标签:
【中文标题】在 Tomcat 中作为 ROOT 部署时 RPC/Servlet 不起作用【英文标题】:RPC/Servlet not working when deployed in Tomcat as ROOT 【发布时间】:2011-12-08 01:44:03 【问题描述】:我有一个已在 Tomcat 中部署的 GWT 应用程序。当我像这样将它部署在 webapps 文件夹中时:
webapps/mygwtapp
并从浏览器访问它,http://localhost:8080/mygwtapp 服务器端 RPC/Servlet 工作。
但是,当我将 mygwtapp
文件夹更改为 ROOT
文件夹时,RPC/Servlet 停止工作。
一个 servlet 配置,这在应用未部署为 ROOT 时有效:
<servlet-mapping>
<servlet-name>greetServlet</servlet-name>
<url-pattern>/mygwtapp/greet</url-pattern>
</servlet-mapping>
但是,当部署为 ROOT 时,它不起作用,即使我以这种方式更改 url 模式:
<url-pattern>/greet</url-pattern>
可能是什么问题?
【问题讨论】:
请解释具体是什么不起作用。如果可能,提供错误消息和/或堆栈跟踪。 RPC 失败,因为我认为 servlet url-pattern 映射不正确。 但是,当我将应用程序从 ROOT 传输到 webapps 文件夹中的 mygwtapp 时,它就可以正常工作(即,如果 url-pattern 是这样的:即使使用 ROOT 路径仍然可以是 '/mygwtapp/greet'
模式是[context] / [project name] / [servlet],所以在这种使用ROOT的情况下是/ + mygwtapp + 问候
1)检查页面上java脚本的路径,应该是...
<script type="text/javascript" language="javascript" src="mygwtapp/mygwtapp.nocache.js"></script>
我会使用跟踪工具来查看您在 javascript、Firefox/Firebird、Chrome/Developer Tools 或 IE/HttpWatch 中获得的结果是否良好。你应该得到一个 200,如果不是这个路径就是问题所在。
2)检查你在ROOT文件夹中的文件夹布局,你应该有以下内容
ROOT
|->mygwtapp (your mygwtapp.nocache.js should be here)
|->WEB-INF
3) 检查 web.xml 路径,应该是 /mygwtapp/greet 并且你的 @RemoteServiceRelativePath 应该是“greet”
希望对您有所帮助。
【讨论】:
使用您建议的这种方法,当我访问localhost:8080 时,它会自动处理 mygwtapp 吗?我的意思是喜欢将请求转发到 ROOT\mygwtapp? 当您加载页面时,localhost:8080/mygwtapp/mygwtapp.nocache.js 的跟踪结果是否为 200?以上是关于在 Tomcat 中作为 ROOT 部署时 RPC/Servlet 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
将带有 RPC 的 GWT 部署到 tomcat 的问题(可能是 web.xml 问题)
我在 tomcat 上部署了 GWT,现在 RPC 不起作用