2012-08-14 80 views
0

我的應用程序([URL])未響應。我已經完成了您網站上的推薦步驟。應用程序在本地運行,但返回404在雲上運行

我已經將這場戰爭部署到了我的本地tc-server,並且所有東西都在那裏工作(/ people-server/rest/persons /)。我希望從[URL]/people-server/rest/persons /中獲得一些xml。

請告知

達倫·萊

回答

5

您的應用程序實際上是響應HTTP:// [URL]/_stax /狀態,這意味着該容器能夠接收並妥善處理請求。

由於您的應用正在爲/ people-server/rest/persons路徑請求返回404,這意味着容器當前沒有裝載Servlet來處理這些請求。有跡象表明,你的應用程序可能沒有在運行時配置servlet的原因主要有兩個:

  1. 你還沒有使用Servlet配置您的應用程序正確地處理這些請求(這是通過servlet和servlet-路徑條目通常做過WEB- INF/web.xml)
  2. 在您的應用程序的啓動順序中發生錯誤,導致容器無法加載已配置的Servlet。

要確定是否有錯誤,首先應該檢查應用程序的日誌。由於您沒有發佈任何錯誤,因此我會假設您已經檢查了日誌並沒有發現任何錯誤。

這會讓您看到沒有任何Servlet配置爲處理請求的情況。在看到您的URL後,我注意到它的前綴是/ people-server,它看起來像您在本地配置的TC服務器中可能使用的上下文路徑前綴。由於部署在CloudBees上的應用以根環境路徑運行,因此我嘗試使用以下URL並確認它確實在響應: [URL]/rest/persons/

這意味着您的Servlet已配置爲處理/休息/人員/路徑,這意味着您在本地環境中預期的URL與您部署的環境中存在細微差異。

如果您希望此servlet在/ people-server上可用,您需要更新web.xml以將此前綴用於您的REST Servlet使用的路徑。或者,您可以將應用程序部署爲具有application.xml的EAR文件,該application.xml使用/ people-server的上下文路徑作爲Web應用程序歸檔文件。

+0

非常感謝,這確實是我的問題。另外,很好的解釋。 – someguy99 2012-08-15 13:55:34

1

作爲一般規則 - 400類型的錯誤(例如404在這種情況下)表示應用程序的問題幾乎總是 - 並且通常與路徑錯誤和映射有關。

500型錯誤的意思是在應用程序中unhanded錯誤,這是因爲每個:

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

他們的一些原因可能是,如果應用程序啓動緩慢,有可能是一個短期的有一些錯誤的時間段,504如果應用程序(它的所有實例)非常慢(太慢)。

如果發生持久性502,這可能表示某些情況下的平臺問題(即請求未到達您的應用程序)。

您可以經常在您的應用程序日誌中看到錯誤(蜜蜂app:tail會對此進行流式處理 - 或者使用控制檯)。

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一個奇怪的細節,但是這就是正確的類將被使用。

相關問題