2016-12-26 6 views
1

すべてのサーバーコンソール出力がクライアント出力に表示される必要があります。RMI - クライアントがサーバーコンソールの出力を取得する方法

私はリモートメソッドの実行中にリモートVM上でリモートメソッドを呼び出すのですが、コンソール(リモート)上にいくつかのlog4jレポートがあります。

すべてのlog4jレポートをクライアント側のコンソールに戻したいのですが、

これは可能ですか?

答えて

1

クライアントとサーバだけが、定義したRMIインタフェースを介して通信することを理解する必要があります。両方のプログラムは、自身の JVMで実行されます。 stdoutはクライアントとサーバーにとってまったく異なるものです。どんな種類の伐採インフラストラクチャでももちろん同じです。

本当にサーバーのメッセージをクライアントのログにプッシュしたい場合は、 を強化する必要があります。たとえば、サーバーがすべてのメッセージを含むList<String>を返信できるようにします。

しかし、それはかなり悪い設計思想です。あなた本当にあなたのクライアントのログにはサーバの詳細が含まれないようにします。サーバー上で何が起こるかは、サーバー上にとどまります。あなたのクライアントはのような詳細を知っているビジネスを持っています。 ユーザーは、サーバーの攻撃を計画する際に非常に役立ちます...そのことが詳細に何をしているのかを知るためです!

更新:あなたの入力を考えると、私は次のために行くだろう::

  1. あなたが本当にあなたのサーバー上の標準出力/標準エラー出力に印刷された任意の文字をキャプチャすることができていることを確認してください。 stdout/stderrを "置き換え"て、そこに印刷されたものが何らかのファイルに入るようにします(here参照)。また、VMがLinuxの場合は、両方がファイルにパイプされるようにすることもできます。
  2. あなたのRMIサービス内のものをキャプチャしようとするのではなく、をサーバーから取り出すことができるRMIインターフェイスを追加することで、より単純な解決策に進んでいきます。言い換えれば、現在のRMIコールをそのまま保つこと。任意の時点で完全なログファイルを取得するために使用できる別のサービスを構築しました。
+0

あなたの迅速な対応に感謝します! –

+0

あなたの迅速な対応に感謝します!私はリモートコンソールの出力を取得する理由は、私は自動化テストを実行するため、私はリモートVMにいくつかの展開を実行することです、私は私の展開を確認し、コンソールの出力を返すリモートでいくつかの自動化テストを実行する私の自動化の検証を含む –

+0

私は幸せになります!ありがとう、良い一日を。 –

関連する問題