Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RMI-客户端如何获得服务器控制台输出?_Java_Rmi - Fatal编程技术网

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

Java RMI-客户端如何获得服务器控制台输出?,java,rmi,Java,Rmi,我需要所有服务器控制台输出将出现在客户端输出 我在远程VM上调用远程方法,在远程方法执行期间,我有一些log4j报告给控制台(远程) 我想将所有log4j报告获取/返回到客户端控制台 这可能吗?不可能。您必须了解,客户机和服务器仅通过您定义的RMI接口进行通信。然后两个程序都在自己的JVM中运行;所以stdout对于客户端和服务器来说是完全不同的。当然,对于任何类型的日志记录基础设施都是如此 如果您真的想将服务器消息推送到您的客户机日志中;然后您需要增强RMI接口,例如允许服务器发回包含所有消息

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

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

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


这可能吗?

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

如果您真的想将服务器消息推送到您的客户机日志中;然后您需要增强RMI接口,例如允许服务器发回包含所有消息的
列表

但请注意:这是一个相当糟糕的设计理念。您确实不希望客户端日志包含服务器的详细信息。服务器上发生了什么。。。保持在服务器上。您的客户不知道这些细节。因为您的用户在计划攻击您的服务器时可能会发现它非常有用。。。要知道那东西到底在做什么

更新:如果您输入,我将选择以下内容:

  • 确保您能够真正捕获服务器上打印到stdout/stderr的任何字符;例如,通过“替换”stdout/stderr,使那里打印的任何内容都进入某个文件(请参阅)。或者,如果您的虚拟机是Linux,您可以确保两者都通过管道传输到文件中
  • 与其尝试在RMI服务中捕获内容,我会选择一个更简单的解决方案——添加一个RMI接口,允许您从服务器中拉出那些stdout/stderr文件。换句话说:保持您当前的RMI呼叫不变;但是构建了另一个服务,您可以使用它在任意时间点检索完整的日志文件

  • 谢谢你的快速回复!!我想获得远程控制台输出的原因是因为我执行了自动化测试,流程是我执行了一些部署到远程VM,然后我想在远程上运行一些自动化测试,检查我的部署并返回控制台输出,其中包括我的自动化验证。这实际上是我的想法。。我重构了我的RMI接口,包括远程方法调用后读取log4j文件输出的字符串返回列表,所以我希望这是一个好的解决方案。谢谢你的建议!我会的!我还有一个问题,我应该如何通过cmd运行我的服务器?当我通过cmd运行时,主服务器会终止,而不是等待客户端。。当我运行eclipse时,等待而不是终止,但这是完全不同的事情。你问了一个具体的问题;你得到了答案。在评论中问更多的问题并不是这个网站的运作方式。我建议A)首先做一些研究B)理清你的需求C)为你的新问题写一个新问题,最好包含一个新问题。也就是说:如果您的代码等待另一方面的事情发生,那么它将等待。因此,您必须以不同的方式编写代码。