Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以编程方式向AppServer发送远程命令?_Java_Openedge - Fatal编程技术网

Java 如何以编程方式向AppServer发送远程命令?

Java 如何以编程方式向AppServer发送远程命令?,java,openedge,Java,Openedge,我需要向远程OpenEdge AppServer发送命令(查询、启动、停止)。这将在OpenEdge 11.3上运行 据我所知,有以下几种选择: OpenEdge管理。这是一个可以通过HTTP访问的Web应用程序。所需要的只是一个网络浏览器。不幸的是,它是为交互使用而设计的——试图通过编程控制它是疯狂的 asbman命令行实用程序。这是一个批处理文件,用于调用Java命令行应用程序,并允许管理本地和远程AppServer。虽然这正是我所需要的,但它带来了沉重的成本:似乎使用它的唯一方法是安装O

我需要向远程OpenEdge AppServer发送命令(查询、启动、停止)。这将在OpenEdge 11.3上运行

据我所知,有以下几种选择:

  • OpenEdge管理。这是一个可以通过HTTP访问的Web应用程序。所需要的只是一个网络浏览器。不幸的是,它是为交互使用而设计的——试图通过编程控制它是疯狂的

  • asbman
    命令行实用程序。这是一个批处理文件,用于调用Java命令行应用程序,并允许管理本地和远程AppServer。虽然这正是我所需要的,但它带来了沉重的成本:似乎使用它的唯一方法是安装OE,它在超过500 MB时并不完全是轻量级的。这包括运行AppServers所需的一切,而我只需要能够向已经运行的远程服务器发送命令

    我应该注意到,这只会以交互方式接收密码,尽管这是可以解决的(重定向STDIN很简单)

    • 如果我能提取那个Java应用程序(
      com.progress.ubroker.tools.UBCmdClient
      progress.jar
      ),那就好了。但是,它至少调用一个本机库(
      jutil.dll
      ),并且它们使用自定义启动器(
      jvmStart.exe

      尝试通过标准Java启动器(
      Java.exe
      )启动它会导致加载本机库时出错(
      需要库的绝对路径:null\bin\jutil.dll
      )。我也在提取
      jvmStart.exe
      ,但似乎有很多依赖项

      我找不到这方面的任何文件

  • asbman
    最终通过一个协议与AdminServer和可能的appserver通信,该协议称为“Chimera”。不幸的是,我似乎在任何地方都找不到文档


有什么我错过的吗?是否有人知道一种方法,最好是但不一定要有文档记录(在这一点上,只要它起作用,与特定OE版本的关联现在就可以了),以远程和编程方式向AppServer发送查询和命令,而无需安装整个套件?我真不敢相信,没有人会认为这是一件有用的事情。

我有个坏消息要告诉你

没有独立的asbman,也没有记录您要查找的内容

我希望您必须咬紧牙关安装OE。您可能会通过反复试验或仔细监视实际使用的文件来修剪安装过程中的大量绒毛。就我个人而言,我从未发现这种事情值得付出太多努力。磁盘很便宜


如果你真的找到了解决方案,我会很感兴趣的。

我正在研究这个问题,如果我找到什么/答案,我会给你回复的

这并不是说它在11.3/4和“经典”AppServer中对您有所帮助,而是Pacific AppServer肯定会有一个REST API(在Exchange上宣布的新AppServer:)


如果我发现任何关于以编程方式控制早期版本的信息,我会告诉你。

我的名字是Mei Swank。我是一名Progress OpenEdge技术支持经理,我不高兴听到您与我们的团队在这个主题上的经验是不积极的。我们正在努力解决这个问题

要回答您的问题,即是否有办法在不安装产品的情况下远程管理Appserver,在不安装OpenEdge的情况下,无法从一台计算机对另一台计算机上运行的远程Appserver运行Appserver admin命令

如果您的目标是远程控制另一台windows计算机上运行的AppServer,而不在该计算机上安装OpenEdge产品,则可能有两种选择:

  • 使用Power shell编写Windows远程shell脚本,正如您所调查的那样

  • 使用OpenEdge管理产品,并将AppServer管理脚本设置为按计划运行的作业。OpenEdge管理可以安装在任何机器上,web控制台可以在浏览器中用于远程管理作业

  • 如果您希望减少安装占用空间,而不是安装AppServer许可证,请安装无名称服务器部署组件产品,以远程管理AppServer。这种方法将把安装足迹从500兆欧减少到约179兆欧。此部署组件是一个免费产品,可以从ESD下载

    我们还将这些选项记录在一篇知识库文章中,可供参考

    谢谢,如果您还有其他问题,请告诉我


    Mei

    如果您使用的是OpenEdge Explorer(或管理)(11.0+)的最新版本,那么您可以通过curl或类似的工具使用相当广泛的REST API,这些工具几乎不需要占用任何空间

    获取具有基本状态的资源的完整列表

    curl-u管理员:admin-u

    appserver的获取状态(使用从上面获取的URL)

    curl-u admin:admin

    启动应用服务器:

    curl-u admin:admin-H“Content-Type:application/json”-X PUT-d'{“running”:true}”

    停止appserver:


    curl-u admin:admin-H“Content-Type:application/json”-X PUT-d'{“running”:false}'

    附录:我们已经尝试联系Progress,但他们的回复毫无用处(建议使用webapp,询问我们为什么需要“开发我们自己的工具”[我们不是!如果可能的话,我们想调用一个现有的类,只是不需要人工点击它!]并告诉我们“提取progress.jar文件,然后你就可以找到类”[然后呢?我们到底应该如何处理一个单独编译的类文件?])。我希望这只是一个错误的通信(或无知的代理)而不是actu的迹象
    **strong text**
    Hi,
    
    i run the commands on windows to query or preform action on an appserver vis batch, from a remote desktop i use psexec \\remoteserver c:\windows\system32\cmd.exe to access remote command line on server
    after that have some batches to query/stop/start/kill appserver
    
    hope this will bring u closer to what u need , I am working on same concept to manage appserver/db/name server from html as progress ver. 9.1E running on win2008 does not support "Progress Explorer Tool"
    
    regards 
    
    Emad
    
    #####################################################
    rem appserver 
    @echo off
    SET TYP=type
    SET APS=asb_xxx_%TYP%
    set prt=20931
    set ENV=PROD
    set DLC=D:\PROGRESS\OpenEdge\102B\DLC
    
    if (%1) == () %DLC%\bin\asbman -port %prt% -i %APS%_%ENV% -q
    if (%1) == (q) %DLC%\bin\asbman -port %prt% -i %APS%_%ENV% -%1
    if (%1) == (stop)  %DLC%\bin\asbman -port %prt% -i %APS%_%ENV% -%1
    if (%1) == (start) %DLC%\bin\asbman -port %prt% -i %APS%_%ENV% -%1
    if (%1) == (t)  %DLC%\bin\asbman -port %prt% -i %APS%_%ENV% -trim %2
    if (%1) == (a)  %DLC%\bin\asbman -port %prt% -i %APS%_%ENV% -s %2
    if (%1) == (kill) %DLC%\bin\asbman -port %prt% -i %APS%_%ENV% -%1
    
    #####################################################
    
    rem name server 
    @echo off
    :loop
    color 1B
    cls
    SET ATP=asb_0165_autopro
    SET EDI=asb_0165_edi
    SET SRS=asb_0165_srs
    SET INV=asb_0165_inv
    SET JIT=asb_0165_jit
    SET PLN=asb_0165_plan
    SET SNC=asb_0165_sonic
    SET ENV=PROD
    SET SITE=0165
    SET /A counter=%counter%+1
    if %counter%==10 GOTO end:
    echo.
    echo.
    echo======================================================================
    echo                  AppServers For the %SITE%-%ENV% environment
    echo======================================================================
    echo.
    title                 AppServers For the %SITE%-%ENV% environment
    
    for /F "tokens=1-10" %%i in ('D:\PROGRESS\OpenEdge\102B\DLC\bin\nsman.bat -port 20931 -name NS1 -q') do (
    if /I "%%j" equ "AS.%ATP%_%ENV%" ( @echo %%j      RUNS ON   %%k )
    
    )
    
    
    
    for /F "tokens=1-10" %%i in ('D:\PROGRESS\OpenEdge\102B\DLC\bin\nsman.bat -port 20931 -name NS1 -q') do (
    if /I "%%j" equ "AS.%EDI%_%ENV%" ( @echo %%j          RUNS ON   %%k )
    
    )
    
    
    for /F "tokens=1-10" %%i in ('D:\PROGRESS\OpenEdge\102B\DLC\bin\nsman.bat -port 20931 -name NS1 -q') do (
    if /I "%%j" equ "AS.%SRS%_%ENV%" ( @echo %%j          RUNS ON   %%k )
    
    )
    
    for /F "tokens=1-10" %%i in ('D:\PROGRESS\OpenEdge\102B\DLC\bin\nsman.bat -port 20931 -name NS1 -q') do (
    if /I "%%j" equ "AS.%INV%_%ENV%" ( @echo %%j          RUNS ON   %%k )
    
    )
    
    
    for /F "tokens=1-10" %%i in ('D:\PROGRESS\OpenEdge\102B\DLC\bin\nsman.bat -port 20931 -name NS1 -q') do (
    if /I "%%j" equ "AS.%JIT%_%ENV%" ( @echo %%j          RUNS ON   %%k )
    
    )
    
    
    for /F "tokens=1-10" %%i in ('D:\PROGRESS\OpenEdge\102B\DLC\bin\nsman.bat -port 20931 -name NS1 -q') do (
    if /I "%%j" equ "AS.%PLN%_%ENV%" ( @echo %%j         RUNS ON   %%k )
    
    )
    
    for /F "tokens=1-10" %%i in ('D:\PROGRESS\OpenEdge\102B\DLC\bin\nsman.bat -port 20931 -name NS1 -q') do (
    if /I "%%j" equ "AS.%SNC%_%ENV%" ( @echo %%j        RUNS ON   %%k )
    
    )
    
        enter code here
    
    sleep 3
    
    goto loop
    :end
    exit
    
    just for the fun of it i ran this command from my laptop (without any progress installation`enter code here` on my laptop):
    
    
    
    C:\WINDOWS\system32>psexec \\a-690m111 r:\AproApp\0165\prod\scripts\atp.cmd
    
    
    PsExec v1.98 - Execute processes remotely
    Copyright (C) 2001-2010 Mark Russinovich
    Sysinternals - www.sysinternals.com
    
    Starting r:\AproApp\0165\prod\scripts\atp.cmd on a-690m111...
    
    OpenEdge Release 10.2B08 as of Tue Nov 12 19:06:41 EST 2013
    
    
    Connecting to Progress AdminServer using rmi://localhost:20931/Chimera (8280)
    Searching for asb_0165_autopro_PROD (8288)
    Connecting to asb_0165_autopro_PROD  (8276)
    
    Broker-Name                    : asb_0165_autopro_PROD
    Betriebsmodus                  : Stateless
    Broker-Status                  :  ACTIVE 
    Broker-Anschluss               : 15201
    Broker-PID                     : 6104
    Aktive Server                  : 10
    Ausgelastete Server            : 0
    Gesperrte Server               : 0
    Verfügbare Server              : 10
    Aktive Clients (jetzt, Spitze) : (0, 2)
    Client-Warteschl. (jetzt, max) : (0, 0)
    Summe der Anfragen             : 26
    Anf-Wartezeit (max, durchschn) : (0 ms, 0 ms)
    Anf-Dauer (max, durchschn.)    : (3740 ms, 299 ms)
    
    PID   Zustand   Port  nAnf   nAempf nSent  Gestartet        Letzte ؤnderung  
    05644 AVAILABLE 15210 000006 000006 000006 21.12.2014 21:44 21.12.2014 21:48 
    05544 AVAILABLE 15211 000003 000003 000003 21.12.2014 21:44 21.12.2014 21:49 
    05396 AVAILABLE 15212 000002 000002 000005 21.12.2014 21:44 21.12.2014 21:48 
    05400 AVAILABLE 15213 000002 000002 000012 21.12.2014 21:44 21.12.2014 21:48 
    02540 AVAILABLE 15214 000002 000003 000003 21.12.2014 21:44 21.12.2014 21:48 
    06052 AVAILABLE 15215 000003 000003 000004 21.12.2014 21:44 21.12.2014 21:49 
    05296 AVAILABLE 15216 000002 000003 000003 21.12.2014 21:44 21.12.2014 21:48 
    06088 AVAILABLE 15217 000002 000002 000002 21.12.2014 21:44 21.12.2014 21:48 
    06184 AVAILABLE 15218 000002 000002 000002 21.12.2014 21:44 21.12.2014 21:48 
    06216 AVAILABLE 15219 000002 000002 000002 21.12.2014 21:44 21.12.2014 21:49 
    
    
    
    r:\AproApp\0165\prod\scripts\atp.cmd exited on a-690m111 with error code 0.
    
    C:\WINDOWS\system32>