RMI - 客户端如何获得服务器控制台输出?

时间:2016-12-26 08:11:48

标签: java rmi

我需要所有服务器控制台输出都出现在客户端输出中。

我在远程VM上调用远程方法,在远程方法执行期间,我有一些log4j报告到控制台(在远程方法上)。

我想将所有log4j报告/返回到我的客户端控制台。

这可能吗?

1 个答案:

答案 0 :(得分:1)

不是真的。您必须了解客户端和服务器通过您定义的RMI接口进行通信。然后两个程序都在自己的 JVM中运行;所以stdout对于客户端和服务器来说是完全不同的。对于任何类型的日志记录基础结构都是如此。

如果您真的想将服务器消息推送到客户端日志中;然后你需要增强那个RMI接口,例如允许服务器发回包含所有消息的List<String>

但请注意:这是一个相当糟糕的设计理念。您真的不希望您的客户端日志包含服务器详细信息。服务器上发生了什么...停留在服务器上。您的客户没有业务了解此类详细信息。因为您的用户可能会在计划攻击您的服务器时发现它非常有用...要知道该事情的详细信息!

更新:根据您的意见,我会选择以下内容:

  1. 确保您可以捕获在服务器上打印到stdout / stderr的任何字符;例如,通过“替换”stdout / stderr,以便在那里打印的任何内容都包含在某个文件中(参见here)。或者,如果您的VM是Linux,则可以确保两者都通过管道传输到文件中。
  2. 我没有尝试捕获RMI服务中的内容,而是寻求更简单的解决方案 - 添加一个RMI接口,允许您从服务器那些stdout / stderr文件。换句话说:保持当前的RMI呼叫;但是构建了另一个服务,您可以使用它在任意时间点检索完整的日志文件。
相关问题