有个关于java控制台的小问题

是这样的:
 我在机器的本地上有个java程序在跑
 是个JavaSE程序,有控制台输入和输出

我想的是我跑一个springboot构建一个web端来控制这个系统进程,实时读取输出内容在网页上显示,同时还可以往里面输入指令

请问springboot有什么合适的衍生框架或者工具能解决这个问题吗?
或者是除了springboot的其他框架能解决这个问题

构建web,是不需要输入指令什么的,可以使用jquery, bootstrap,easyui等前端框架实现你所说的“指令”,其实那个是请求,通过web页面上的按钮实现各个环节的功能,可以说你的整体javaSE呈现需要重构。好好学习下 spring boot 中的 spring web开发。

你是想用spring-boot开发的web程序,去控制。你的那个JavaSE进程。通过web控制台,去实现读取,和输入??

socket通信实现。JavaSE程序 提供一个 socket服务。http/tcp都行,然后通过springboot的web服务去调用它。就可以通信了。最简单,也好维护。

emmmmm。。。
你可能没有懂我的意思,重点不是web,而是如何用一个程序监听另外一个JavaSE程序的输出

是的!是的!是的!

那就用websocket吧,可以通讯的

1 个赞

对。。我昨天想了很久,也是这么想的解决方案

因为要监听的是一个游戏服务器,然后能做插件,所以我打算使用服务器插件的形式基于socket来监听和输入。
但是如果能有更底层的,系统进程层面的控制就更好了

@Xy718
你好,我阅读了你的问题。我个人的理解是你需要通过在另一个java进程上和用户进行交互来实现控制当前这个JavaSE程序。
我个人认为,要能够实现一个程序控制另一个程序,你需要着两个程序实现相互通信,不论是通过Http还是WebSocket或者数据库,只要JavaSE程序能接收到你的另一个程序的指令就可以。
我个人还是比较倾向于采用网络通信的方式。

1 个赞

确实,但是这是在两个程序都是我们自身开发的情况下,
也就是说我们是可以通过 插件/代码 等修改两个程序代码的手段来达到通信和控制
目前这个问题是可以这样解决的。
但是万一我们需要监控的目标进程我们无法修改她的代码呢?
我在想有没有什么容器技术之类的能够解决这个问题

你好、如果你不希望修改目标程序的代码的话、我有以下几个建议:
1.如果只是希望控制程序启动和停止、可以通过java调用直接shell脚本来控制进程。
2.如果控制的是业务代码、则我建议你使用javaagent、通过动态修改字节码来实现。在目标游戏程序启动的时候指定写好的javaagent程序、让另一个程序与javaagent相互对应产生数据交互。
3、游如果以上两种方法你都不喜欢、则还有最后一个建议。你可以吧自己需要控制的功能抽象出来、游戏代码在编码的时候就优先实现这些抽象类。这样你只需要提前制定好这个抽象规范、让其他程序来控制这些游戏程序则会显得十分容易。

2 个赞

新进展!
其实关于这个问题没有必要这么死脑筋,一定要用Java实现
可以使用noVnc!
在web页面上使用noVnc再通过js等手段来跟后台通讯!

2 个赞

头一回听说这个东西。

哈哈,前两天无意间看到的,完美解决Web端内嵌虚拟机控制台的问题