【问题标题】:Failing to Deploy Web App to server at context path?无法将 Web 应用程序部署到上下文路径的服务器?
【发布时间】:2011-05-14 02:29:48
【问题描述】:

我有一个简单的 Jersey jax rs hello world 应用程序,我正在尝试将它部署到我的 tomcat 服务器,这样我就可以调用资源 url 并检查它是否给了我所需的输出,但是当我在web.xml 它不会部署到它所做的服务器但是当我取出 servlet 信息并只留下一个空白 web.xml 意味着这一定是我的问题。这是我的 web.xml 的内容。

 `<!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>
  <display-name>Web App</display-name>  
  <servlet-name>ServletContainer</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletContainer</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
</web-app>

这里要求的是错误的堆栈跟踪

[INFO] [war:war {execution: default-war}]
[INFO] Packaging webapp
[INFO] Assembling webapp[app1] in [C:\Users\leo\4thYearUni\Project\app1\target\app1]
[INFO] Processing war project
[INFO] Copying webapp resources[C:\Users\leo\4thYearUni\Project\app1\src\main\webapp]
[INFO] Webapp assembled in[170 msecs]
[INFO] Building war: C:\Users\leo\4thYearUni\Project\app1\target\app1.war
[INFO] [tomcat:redeploy {execution: default-cli}]
[INFO] Deploying war to http://localhost:8080/app1
[INFO] OK - Undeployed application at context path /app1
[INFO] FAIL - Failed to deploy application at context path /app1

如果有人有任何想法或解决方法,我们将不胜感激 谢谢 克里斯

【问题讨论】:

  • 感谢 Starkey 会继续努力,我从来没有意识到我不是。
  • 您已经发布了尝试将您的应用部署到 Tomcat 服务器的 maven tomcat 插件的输出。这个输出只是告诉你它失败了——Maven 不知道为什么 Tomcat 拒绝了它。查看 Tomcat 安装目录中的日志以了解更多信息。
  • tomcat 日志状态存在错误,因为 web.xml 格式不正确,我查看了当前的 web.xml,似乎没有任何问题,所以我是不确定为什么无法解析。
  • 它在第 8 行第 4 列失败,这是说明 xml 格式不正确的 servlet 类标记。

标签: java tomcat jersey deployment


【解决方案1】:

首先,如果部署失败,解决方案的第一个提示是查看应用程序服务器的日志以回答“为什么会失败?”的问题

事情不只是“失败”,它们会给出错误消息和异常以及堆栈跟踪以及有关实际发生的事情的信息。在没有这些知识的情况下试图猜测为什么某事会失败,这只是猜测。

作为猜测,请确保类 com.sun.jersey.spi.container.servlet.ServletContainer 位于 Web 应用程序的类路径中(即在 WEB-INF/lib 目录中)。

【讨论】:

  • 您能否提供更多关于如何将其添加到类路径的信息
【解决方案2】:

在这里回答有点匆忙,但我注意到你的 web.xml 中间有一个悬挂的结束标签:

&lt;/servlet&gt;

这将停止解析......

【讨论】:

  • 谢谢,但它对部署问题没有任何影响。
  • 取出&lt;/servlet&gt; 会是个问题,因为&lt;servlet-class&gt;&lt;servlet-name&gt; 应该在&lt;servlet&gt; 元素内。发布的初始文本的问题是您有一个结束 &lt;/servlet&gt; 标签但没有打开 &lt;servlet&gt; 标签。根据 XML Doctype,您拥有的内容无效
  • @matt b:这条评论应该是你的答案的一部分。
【解决方案3】:

原来我正在编辑的 web.xml 文件有些混乱,当找到正确的 web.xml 并对挂起的 servlet 标记进行排序时,问题就解决了。感谢大家的帮助和耐心,因为我是 maven 的新手。

【讨论】:

    【解决方案4】:

    造成这种情况的一个可能原因是 ant 中的这种条目

    <zipfileset dir="./mywebcontent/" prefix="/" />
    

    删除前缀="/",它会破坏您的存档

    【讨论】:

      【解决方案5】:

      就我而言,这是因为在编写 https://netbeans.org/kb/docs/web/ajax-quickstart.html 教程时,我在创建新 servlet 向导期间没有勾选“向部署描述符 (web.xml) 添加信息”。
      尽管我删除了该 servlet 并再次创建了该 servlet,但这次勾选了复选框,我认为这是导致我的“context.xml”包含导致错误的&lt;Context antiJARLocking="true" path="/MyAjaxApp"/&gt; 的原因。

      所以当我将线路更改为&lt;Context antiJARLocking="true" path="/AutoCompleteServlet"/&gt; 时,一切正常。

      【讨论】:

        猜你喜欢
        • 2013-07-16
        • 2020-02-29
        • 2017-01-04
        • 2012-02-18
        • 2016-07-04
        • 1970-01-01
        • 1970-01-01
        • 2015-04-01
        • 1970-01-01
        相关资源
        最近更新 更多