Как вызвать удаленный bat-файл, используя - PullRequest
1 голос
/ 21 июля 2011

Сервер приложений GlassFish использует сценарий asadmin.bat, который, в свою очередь, запускает JVM.

Я бы хотел вызвать этот сценарий, используя jinterop и DCOM из Java на удаленном компьютере.Я не могу найти никакой помощи в этом конкретном использовании.Любая помощь будет принята с благодарностью.

1 Ответ

4 голосов
/ 22 июля 2011

Я использую 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" )});

Если вам нужен вывод из пакета, вы можете использовать StdOut для его чтения.

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()); 
} 
...