2016-12-26 145 views
1

我需要所有的服務器控制檯輸出將出現在客戶端輸出。RMI - 客戶端如何獲得服務器控制檯輸出?

我在遠程虛擬機上調用遠程方法,在遠程方法執行過程中,我向控制檯(遠程)發送了一些log4j報告。

我想獲取/返回所有log4j報告到我的客戶端控制檯。

這是可能的嗎?

回答

1

不是。您必須瞭解客戶端和服務器只有通過您定義的RMI接口進行通信。然後這兩個程序運行在他們的自己的 JVM中;所以stdout對客戶端和服務器來說是完全不同的東西。對於任何類型的日誌記錄基礎結構來說,情況當然也是如此

如果您確實想將服務器消息推送到客戶端日誌中,那麼你需要增強那個RMI接口,例如通過允許服務器發回一個包含所有消息的List<String>

但請注意:這是一個相當糟糕的設計理念。您真的不希望您的客戶端日誌包含服務器的詳細信息。服務器上會發生什麼......停留在服務器上。您的客戶有沒有業務知道這些細節。因爲您的用戶在計劃攻擊您的服務器時可能會發現它非常有用......以便詳細瞭解該功能正在做什麼!

更新:給你的投入,我會去以下::

  1. 確保您能真正捕捉打印到stdout任何字符/標準錯誤您的服務器上;例如通過「替換」stdout/stderr,以便在那裏打印的任何內容進入某個文件(請參閱here)。另外,如果你的虛擬機是Linux,你可以確保它們都被傳送到文件中。
  2. 而不是嘗試捕獲您的RMI服務內的東西,我會去尋找一個更簡單的解決方案 - 通過添加一個RMI接口,允許您從服務器上獲得那些stdout/stderr文件。換句話說:保持當前的RMI呼叫不變,但構建了另一項服務,您可以使用該服務在任意時間點檢索完整的日誌文件。
+0

感謝您的快速響應! –

+0

感謝您的快速回復!我想獲得遠程控制檯輸出的原因是因爲我執行自動化測試,流程是我執行一些部署到遠程VM,然後我想在遠程運行一些自動化測試,檢查我的部署並返回控制檯輸出包括我的自動化驗證 –

+0

我會很高興!謝謝..祝你有美好的一天。 –

相關問題