【问题标题】:Deploy GWT .war with Servlet in Tomcat在 Tomcat 中使用 Servlet 部署 GWT .war
【发布时间】:2011-12-11 00:08:05
【问题描述】:

我一直在关注构建示例 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 中部署它,如果这有什么不同的话。

【问题讨论】:

标签: gwt tomcat6 war


【解决方案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>

因为它已经在 stockwatcher 战争背景下。

现在此链接按预期工作:http://127.0.0.1:8080/stockwatcher/stockPrices?q=ABC

【讨论】:

    【解决方案2】:

    您可以尝试将编译期间创建的整个文件夹复制到您的 tomcat webapps 文件夹中。如果这行得通,您就会知道问题在于制造战争还是有不同的来源。我认为它与您的 web.xml 有关。如果您查看 /webapps/yourproject/WEB-INF/ 在您的 tomcat 目录中,web.xml 的外观如何? 您的应用程序中有 RPC 吗?他们在工作吗?

    【讨论】:

    • 我刚刚尝试复制整个文件夹,但仍然无法正常工作。以下是 /webapps/projectname/WEB-INF/web.xml 中有关 servlet 的相关信息:&lt;servlet&gt; &lt;servlet-name&gt;jsonStockData&lt;/servlet-name&gt; &lt;servlet-class&gt;com.google.gwt.sample.stockwatcher.server.JsonStockData&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;jsonStockData&lt;/servlet-name&gt; &lt;url-pattern&gt;/stockwatcher/stockPrices&lt;/url-pattern&gt; &lt;/servlet-mapping&gt;
    【解决方案3】:

    您已将 servlet 映射为

    /stockwatcher/stockPrices

    但您将其调用为:

    /stockwatcher/stockPrice?q=ABC

    这是一个错字。

    【讨论】:

    • 很好,但不幸的是,这只是我评论中的一个错字,而不是在我实际测试它的时候。我只是仔细检查了一下,我实际映射到的 url 仍然无法正常工作。我实际上正在部署到另一个应用程序的 tomcat 服务器。是否可以将 Tomcat 配置为阻止此类访问?
    【解决方案4】:

    确保应用程序在与 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 以确保您的应用程序已发布在哪个路径上

    【讨论】:

      猜你喜欢
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      相关资源
      最近更新 更多