0

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

我已经将这场战争部署到我的本地 tc-server 并且一切都在那里工作(/people-server/rest/persons/)。我希望从 [URL]/people-server/rest/persons/ 中获取一些 xml。

请指教

梁达伦

4

3 回答 3

5

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

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

  1. 您尚未使用 Servlet 正确配置您的应用程序以处理这些请求(这通常通过 WEB-INF/web.xml 中的 servlet 和 servlet-path 条目完成)
  2. 在您的应用程序启动过程中发生错误,导致容器无法加载您配置的 Servlet。

要确定是否存在错误,您应该首先检查应用程序的日志。由于您没有发布任何错误,我假设您已经检查了日志并且没有发现任何错误。

这会给您留下没有配置任何 Servlet 来处理请求的情况。看到您的 URL 后,我注意到它的前缀是 /people-server,这看起来很像您可能在本地配置的 TC 服务器中使用的上下文路径前缀。由于部署在 CloudBees 上的应用程序在根上下文路径中运行,因此我尝试使用以下 URL 并看到它确实在响应:[URL]/rest/persons/

这意味着您确实配置了一个用于处理 /rest/persons/ 路径的 Servlet,这意味着您在本地环境中与部署环境中预期的 URL 略有不同。

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

于 2012-08-14T21:14:05.143 回答
1

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

500 类型错误意味着应用程序中存在未经处理的错误,这是按照:

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

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

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

您经常会在您的应用程序日志中看到错误(bees app:tail 将对此进行流式传输 - 或使用控制台)。

于 2012-08-14T23:00:11.957 回答
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 的一个奇怪的细节,但这是要使用的正确类。

于 2012-08-15T09:12:47.077 回答