我一直在关注构建示例GWT应用程序的教程:http://code.google.com/webtoolkit/doc/latest/tutorial/gettingstarted.html
然后我想根据本教程尝试公开一个servlet来提供一些JSON数据:http://code.google.com/webtoolkit/doc/latest/tutorial/JSON.html
这两个教程都非常清楚,在开发模式下运行的Eclipse中我没有遇到任何问题。我正在测试它的方法是转到这个URL:http://localhost:8888/stockwatcher/stockPrices?q=ABC+DEF它返回json结果,正如教程中设计的那样。但现在我想将此项目部署为war文件并在我自己的Tomcat服务器中运行它。我发现本教程用于部署将项目转换为.war文件:http://blog.elitecoderz.net/gwt-and-tomcat-create-war-using-eclipse-to-deploy-war-on-tomcat/2009/12/。很明显,构建的.war文件没有任何错误,但是在部署之后,我的用于JSON数据的servlet不起作用。我只是得到一个404页面,没有任何反应。我也没有在server.log中看到任何内容。此外,我试图在Tomcat 6中部署它,如果这有任何区别。
答案 0 :(得分:1)
我明白了;我的web.xml文件中的url-pattern标签存在问题。
这就是我所拥有的:
<url-pattern>/stockwatcher/stockPrices</url-pattern>
但这导致可以从此URL访问stockPrices servlet:http://127.0.0.1:8080/stockwatcher/stockwatcher/stockPrices?q=ABC
相反,我改为:
<url-pattern>/stockPrices</url-pattern>
因为它已经存在于股票战争的背景下。
现在此链接按预期工作:http://127.0.0.1:8080/stockwatcher/stockPrices?q=ABC
答案 1 :(得分:0)
您可以尝试将编译期间创建的整个文件夹复制到tomcat webapps文件夹中。如果有效,你会知道问题在于创造战争还是有不同的来源。我认为它与你的web.xml有关。在你的tomcat目录中,如果查看/ webapps / yourproject / WEB-INF / web.xml是什么样的? 你的申请中有rpcs吗?他们在工作吗?
答案 2 :(得分:0)
您已将servlet映射为
<强> /的StockWatcher / stockPrices 强>
但您将其调用为:
<强> /的StockWatcher / stockPrice Q = ABC 强>
这是一个错字。
答案 3 :(得分:0)
确保应用程序在与eclipse中相同的路径上启动
http://127.0.0.1:8080/stockwatcher
Tomcat默认使用war /文件夹名称作为根路径,所以如果你有 stockwatcher-1.0-SHAPSHOT.war它将发布为http://127.0.0.1:8080/stockwatcher-1.0-SHAPSHOT ...
同样到Tomcat管理页面http://localhost:8080/manager/html以确保您的应用程序已发布到哪个路径