2016-07-14 56 views
0

我正在使用Weblogic 12.2.1和內置的Jersey客戶端2.21.1每隔幾個小時向一個遠程系統發出一批https請求。
爲此,我有一個@Singleton bean,其中有一個@Scheduled方法,它在某些時候被Weblogic執行。因此,在每次執行@Scheduled方法時,我都會接連發出幾個https調用。 所有請求都是同步的。Jersey客戶端請求Java EE上的問題

問題是,由於某種原因,下一個請求會在先前(根據Wireshark輸出)之後延遲一分鐘發送。 Jersey的調用呼叫被阻止。立即響應。遠程系統沒有問題。

在JUnit測試(普通java)中執行時發送請求的相同代碼沒有延遲。所有請求都立即通過。所以也許是Weblogic容器的東西。
任何有類似問題的人?

回答

0

實際上,當我在ApacheConnectorProvider的客戶端中更改默認的HttpUrlConnectorProvider時,請求之間沒有更多延遲。事實上,這個怎麼澤西文檔狀態是:

...在複雜環境中(如應用服務器),其中一些可池化的連接可能會在你的應用程序甚至是白手起家的存在,這種做法是不是100%可靠的,我們建議使用不同的客戶端傳輸連接器,例如Apache Connector。

但是如果您想使用客戶端的多部分功能,又會出現另一個問題。在這個文檔說:

警告

注意使用比默認連接器實現其他的。 WriterInterceptor或MessageBodyWriter中有一個處理HTTP頭的問題。如果需要更改頭字段,則不要使用ApacheConnectorProvider,也不要使用GrizzlyConnectorProvider,也不要使用JettyConnectorProvider。例如,該問題適用於也修改HTTP標頭的Jersey Multipart功能。

最後我發現自己處於一種情況,我必須選擇ApacheConnector(快速請求),沒有多部分或多部分緩慢的請求。有趣不是嗎?

我想我應該花更多時間研究其他實際上適用於Java EE環境的寧靜客戶端。