2016-01-15 64 views
2

我的RestClient假定使用來自多個服務器的服務,每個服務器都有不同的主機名和憑證。我可以在使用來自多個服務器的REST式服務時使用相同的RestTemplate實例

我知道RestTemplate is thread safe,併爲每個任務創建了一個不同的連接,但是如何使用不同的憑據來完成? 在創建時不是憑證提供給RestTemplate嗎?

+0

它們在邏輯上是相同的服務嗎?只是與不同的主機?或不同的服務? – leeor

+1

兩者。許多服務可以分爲與不同主機相同服務的組。 – Nati

+1

爲什麼要這樣做。這很難配置,很難理解,並且必須編寫一些新的類,......爲什麼每個服務器不使用一個RestTemplate? – Ralph

回答

2

您提到憑據,所以我假設您使用RestTemplate來調用需要驗證的服務。身份驗證通常通過HTTP請求標頭(例如基本HTTP身份驗證)或URL參數處理。

兩個可能性:

  • 你實例化一個普通RestTemplate和手動處理認證(當你通過添加標題或URL參數GETPOST ...)=>應該重用沒問題該RestTemplate與多個服務。
  • 您使用自定義ClientHttpRequestFactory或處理安全性的某些自定義ClientHttpRequestInterceptor實例化RestTemplate =>您可能無法共享它們,因爲您可能混合了不同的身份驗證。
+3

謝謝。由於某種原因,我發現'RestTemplate'被認爲是一個「重量級」對象,所以我想盡可能少創建,但是在每個'GET' /'POST'上亂搞手動驗證聽起來並不好玩。 我想我會爲每個使用的服務器保留一個'RestTemplate'。 – Nati

相關問題