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シェルを使用して、リモートコンピュータ上のプログラムまたはバッチを実行します。あなたは、あなたがそれを読むためにSTDOUTを使用することができますバッチからの出力が必要な場合は
// 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