应用程序在本地运行但返回404在cloudbees上运行

时间:2012-08-14 17:25:52

标签: cloudbees

我的应用([URL])没有响应。我已经完成了您网站上推荐的步骤。

我已将此战争部署到我当地的tc-server,一切都在那里工作(/ people-server / rest / persons /)。我希望从[URL] / people-server / rest / persons /.

中获取一些xml

请告知

Darren Leung

3 个答案:

答案 0 :(得分:5)

您的应用实际上是响应http:// [URL] / _stax / status,这意味着容器能够正确接收和处理请求。

由于您的应用程序为/ people-server / rest / persons路径请求返回404,这意味着容器当前没有加载Servlet来处理这些请求。您的应用程序可能没有在运行时配置servlet有两个主要原因:

  1. 您尚未正确配置Servlet应用程序以处理这些请求(这通常通过WEB-INF / web.xml中的servlet和servlet-path条目完成)
  2. 在您的应用启动过程中发生了一个错误,导致容器无法加载已配置的Servlet。
  3. 要确定是否存在错误,您应首先检查应用的日志。由于您没有发布任何错误,我将假设您已经检查了日志并且没有发现任何错误。

    这使您无需配置任何Servlet来处理请求。看到你的URL之后,我注意到它的前缀是/ people-server,它看起来很可能像你在本地配置的TC服务器中使用的上下文路径前缀。由于部署在CloudBees上的应用程序在根上下文路径上运行,我尝试使用以下URL并看到它确实在响应:   [URL] /休息/人/

    这意味着您确实为处理/休息/人员/路径配置了Servlet,这意味着您在本地环境与部署环境中预期的URL略有不同。

    如果您希望此Servlet在/ people-server上可用,则需要更新web.xml以将此前缀用于REST Servlet使用的路径。或者,您可以将应用程序部署为带有application.xml的EAR文件,该应用程序使用/ people-server的上下文路径作为您的webapp存档。

答案 1 :(得分:1)

作为一般规则 - 400类型错误(例如,在这种情况下为404)表示应用程序的问题几乎始终 - 并且通常与路径错误和映射有关。

500类型错误意味着应用程序中存在无法处理的错误,如下所示:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

它们的一些原因可能是如果应用程序启动缓慢,可能会有一段时间存在一些错误,504如果应用程序(它的所有实例)都非常慢(太慢)。

如果发生持续性502,这可能表示某些情况下存在平台问题(即请求未到达您的应用程序)。

您经常可以在应用日志中看到错误(蜜蜂app:tail将流式传输 - 或使用控制台)。

答案 2 :(得分:0)

如果您的应用使用JAX-RS在jboss(“JavaEE 6 Web配置文件”)容器上提供其他内容,则需要为此功能启用容器支持。只需将此servlet声明添加到web.xml

即可
<servlet>
    <servlet-name>jax-rs</servlet-name>
    <servlet-class>javax.ws.rs.core.Application</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jax-rs</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

您的IDE可能会警告javax.ws.rs.core.Application不是一个servlet,这确实是JAX-RS API的一个奇怪的细节,但这是正确使用的类。