Java 如何以编程方式向AppServer发送远程命令?
我需要向远程OpenEdge AppServer发送命令(查询、启动、停止)。这将在OpenEdge 11.3上运行 据我所知,有以下几种选择:Java 如何以编程方式向AppServer发送远程命令?,java,openedge,Java,Openedge,我需要向远程OpenEdge AppServer发送命令(查询、启动、停止)。这将在OpenEdge 11.3上运行 据我所知,有以下几种选择: OpenEdge管理。这是一个可以通过HTTP访问的Web应用程序。所需要的只是一个网络浏览器。不幸的是,它是为交互使用而设计的——试图通过编程控制它是疯狂的 asbman命令行实用程序。这是一个批处理文件,用于调用Java命令行应用程序,并允许管理本地和远程AppServer。虽然这正是我所需要的,但它带来了沉重的成本:似乎使用它的唯一方法是安装O
- OpenEdge管理。这是一个可以通过HTTP访问的Web应用程序。所需要的只是一个网络浏览器。不幸的是,它是为交互使用而设计的——试图通过编程控制它是疯狂的
命令行实用程序。这是一个批处理文件,用于调用Java命令行应用程序,并允许管理本地和远程AppServer。虽然这正是我所需要的,但它带来了沉重的成本:似乎使用它的唯一方法是安装OE,它在超过500 MB时并不完全是轻量级的。这包括运行AppServers所需的一切,而我只需要能够向已经运行的远程服务器发送命令 我应该注意到,这只会以交互方式接收密码,尽管这是可以解决的(重定向STDIN很简单)asbman
- 如果我能提取那个Java应用程序(
,com.progress.ubroker.tools.UBCmdClient
),那就好了。但是,它至少调用一个本机库(progress.jar
),并且它们使用自定义启动器(jutil.dll
) 尝试通过标准Java启动器(jvmStart.exe
)启动它会导致加载本机库时出错(Java.exe
)。我也在提取需要库的绝对路径:null\bin\jutil.dll
,但似乎有很多依赖项 我找不到这方面的任何文件jvmStart.exe
- 如果我能提取那个Java应用程序(
最终通过一个协议与AdminServer和可能的appserver通信,该协议称为“Chimera”。不幸的是,我似乎在任何地方都找不到文档asbman
有什么我错过的吗?是否有人知道一种方法,最好是但不一定要有文档记录(在这一点上,只要它起作用,与特定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产品,则可能有两种选择:
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>