GlassFish Application Server使用腳本asadmin.bat,該腳本依次啓動JVM。如何使用jinterop調用遠程bat文件
我想在遠程機器上使用Java中的jinterop和DCOM調用此腳本。我無法找到任何有關此特定用法的幫助。任何幫助將不勝感激。
GlassFish Application Server使用腳本asadmin.bat,該腳本依次啓動JVM。如何使用jinterop調用遠程bat文件
我想在遠程機器上使用Java中的jinterop和DCOM調用此腳本。我無法找到任何有關此特定用法的幫助。任何幫助將不勝感激。
我使用Windows Scripting Host Shell在遠程計算機上執行某些程序或批處理。
代碼如下:
// Create a session
JISession session = JISession.createSession(<domain>, <user>, <password>);
session.useSessionSecurity(true);
// Execute command
JIComServer comStub = new JIComServer(JIProgId.valueOf("WScript.Shell"),<IP>, session);
IJIComObject unknown = comStub.createInstance();
final IJIDispatch shell = (IJIDispatch)JIObjectFactory.narrowObject((IJIComObject)unknown.queryInterface(IJIDispatch.I ID));
JIVariant results[] = shell.callMethodA("Exec", new Object[]{new JIString("%comspec% /c asadmin.bat")});
如果您需要從批量輸出,你可以使用標準輸出的閱讀。
JIVariant stdOutJIVariant = wbemObjectSet_dispatch.get("StdOut");
IJIDispatch stdOut = (IJIDispatch)JIObjectFactory.narrowObject(stdOutJIVariant.getObjectAsComObject());
// Read all from stdOut
while(!((JIVariant)stdOut.get("AtEndOfStream")).getObjectAsBoolean()){
System.out.println(stdOut.callMethodA("ReadAll").getObjectAsString().getString());
}
我解決了多層防火牆後,它工作得很好。 但是這個變量來自哪裏: wbemObjectSet_dispatch – codeplumber
好的,我忘了行'最終IJIDispatch wbemObjectSet_dispatch =(IJIDispatch)JIObjectFactory.narrowObject((results [0])。getObjectAsComObject());'所以它來自結果數組。 –
我在運行時遇到錯誤,是否必須啓用「使用代理進程」標誌? –
Björn - 你是我的新英雄!這一切都很完美。非常感謝。我沒有足夠的積分給你點 - 遺憾的是... – codeplumber