是否可以在 JNDI 的已注册的机器上找到所有打开的端口?
最好从 Ubuntu 中找到一些工具,但 Java 代码也可以。
更新:在JSP澄清之后,我修改了我的问题。
答案 0 :(得分:1)
我会做以下事项:
A.解析您的应用程序服务器配置
- 例如,对于Jboss AS 7.x的独立配置,您应该解析standalone / configuration / standalone.xml
B.从XML中读取JNDI配置,并了解应使用哪些端口。
C.使用
System.getRuntime()。EXEC
为了调用netstat -na,请过滤掉从A获得的列表中存在且处于ESTABLISHED状态的端口。
我的解决方案有些问题:
答:据我所知,根据Java EE规范,您不应该从Java企业应用程序执行进程。
为了解决这个问题,您可以将一些j2se应用程序作为服务运行,与应用程序服务器进行通信。
B.我假设服务器和需要了解JNDI端口的代码存在于同一台机器上。
如果需要知道端口的代码应该在不同的机器上运行,您应该将此信息公开给客户端(即 - 通过Web UI,REST等...)