2014-09-23 73 views
0

我有兩個AEM實例,一個本地,一個在我們的開發機器上,具有相同的代碼,設置等。關於兩個AEM實例解析具有不同servlet的URL的可能原因的想法?

URL正確解析爲由路徑定義的自定義servlet。但是,在位於客戶端環境中的另一臺計算機上,URL將解析爲DefaultSlingServlet。我試圖找出該環境和其他環境之間的差異,但是我沒有提出任何想法,因爲它們具有相同版本的AEM 5.6.1,運行相同的JDK,使用相同的準確安裝包。

URL端點解析爲我們在大多數AEM實例上的自定義servlet,而是解析到位於其他位置的計算機上的默認servlet。

我們已經嘗試設置servlet來解決路徑和資源類型問題,並且這兩種方法都可以在第一組機器上正常工作,並且可以在另一臺機器上工作。所以它不是Servlet定義中的路徑與resourceType的路徑。

有沒有人打過這種古怪的行爲?我認爲它必須與不同環境下的設置相關,但迄今爲止找不到差異的運氣。

感謝您的任何想法! (當然,當我發佈到壞機器上的定製servlet時,它會報告PersistencException(當通過路徑定義時)或ConstraintViolationException(當由resourceType定義時)。但是這是可以預期的,因爲它是默認servlet試圖對不允許的節點做點什麼)

回答

1

你應該使用/ system/console/components和/或/ system/console中的OSGi控制檯來檢查servlet服務是否實際註冊了/服務,並比較工作和非工作實例。

/system/console/requests頁面也可以提供幫助,因爲它顯示了調度請求的方式。

最糟糕的情況下,DEBUG級別的日誌應該有助於瞭解如何解析servlet。

+0

感謝伯特蘭 - 其實,我從來沒有看過/系統/控制檯/請求在Felix中,只有資源解析器。很高興知道!我要給這些看看,我們已經請求了其他實例所有者的DEBUG日誌,希望能夠在那裏得到一些答案。我會在這裏回覆我發現的內容。 – 2014-09-29 16:10:08

0

正如Bertrand指出的那樣,您的Servlet未在OSGi中註冊。

默認情況下,所有的GET請求被DefaultGetServlet和處理所有的POST請求轉到SlingPOSTServlet(可提供持久的異常,當你發佈)

轉到您的費利克斯控制檯,並檢查servlet的部署。

此外,如果你想看到哪個servlet調用任何特定的請求,則使用servlet解析工具:

/系統/控制檯/ servletresolver

+0

謝謝Rajesh。 servlet設置相同,並且在我們的內部開發環境中運行良好(即正確解析並由doPost觸發)。他們沒有在外部機器上解決 - 即使它的設置完全一樣:( – 2014-09-29 16:03:55

+0

我認爲它必須與它們的配置有關,我們要求它們將日誌級別更改爲DEBUG,並希望這將揭示不同的東西! – 2014-09-29 16:04:44

相關問題