在线等待

解决方案 »

  1.   

    Java环境在Linux下,主要想实现Java监控Windows系统资源,在Windows上很好做,用wmi C#几行代码就搞定了,在Linux上我想通过Java调用wmi,但是不知道如何调用,系统是Linux上的,用C#写个DLL也用不了,后来查找到有个wmic的东西,就是命令行的wmi,我依然不知道如何才能调用。
      

  2.   

    http://bbs.chinaunix.net/thread-1712730-1-1.html
      

  3.   

    常用就是三种手段:
    1、Windows端开启SNMP(简单网络管理协议);Linux端直接通过标准SNMP协议请求系统性能数据;
    2、Windows端开启Telnet;Linux这边用Java作为客户端连接上去,然后直接远程操作即可;
    3、Windows端开发一个Java代理,负责收集数据;Linux这边就用Java远程请求该代理执行搜集动作;
      

  4.   

    1、SNMP有些东西获取不到,比如进程的一些详细信息,Windows的服务,也监控不到。
    2、Telnet这种方式个人认为不太好操作
    3、Windows客户端是不装其他程序的,可以安装WMI
      

  5.   

    作为设计人员来说,大多数事情最终都是个取舍问题对于80%能通过简单方式实现的功能,就用简单方式来做,比如SNMP;
    对于15%需要通过复杂手段来实现的,不得已就复杂来做,比如Telnet或其它;
    对于5%需要极高代价才能实现的,不如就别做了。
      

  6.   


    能通过SNMP方式获取的,一定用SNMP来获取,有些东西获取不到,就只有通过其他方式了,我在网上查到有个JMX这个东西,不知道ldh911对JMX 了解不。
      

  7.   

    JMX并不复杂,但也别把它想的太神奇了。基本上类似于“3、Windows端开发一个Java代理”。只不过换成Windows端开发一个JMX服务;然后Linux端就可以远程调用了。关于WMI,你参考下这个看看:
    http://simpleframework.net/blog/v/34604.html
      

  8.   


    我之前也查到有 J-Interop这个 东西,网上说配置都没成功过。还没来的及仔细研究。
      

  9.   

    LZ首先要知道这是个远程调用,那么远程机器提供相关的远程连接服务和接口(包括端口)是前提
    像现成的SNMP或telnet之类的,LZ都不想使用,那么就只能自己在远程机器安装自己的程序来提供相关的远程服务
    windows提供SWbemServices服务来远程访问wmi,但是linux是否有相关的远程连接该服务的客户端或相关类库(windows就有提供这样的客户端软件和支持,可以运行wbemtest),这些都不能保证,所以如果非要远程调用wmi,那就在windows端做个代理程序负责提供linux远程连接服务和wmi的调用。(其实LZ可以试试telnet之类的远程登陆成功以后能否调用wmi,如果可以的话,可以写个telnet脚本之类的在java端调用)
      

  10.   

    其实没有更好的办法,我现在还没做这个东西。我估计我会去研究一下,JMX 和 RMI,