【发布时间】:2017-03-29 16:41:44
【问题描述】:
尝试通过 SOAP 连接将 EAR 文件部署到 WebSphere 企业应用程序。
命令行:
call wsadmin -conntype SOAP -host %WAS_HOST% -port %WAS_PORT% -user %WAS_USER% -password !WAS_PASSWORD! -lang jython -c "AdminApp.update('%APP_NAME%', 'app', '[ -operation update -contents %EAR_FILE% -usedefaultbindings -defaultbinding.virtual.host default_host -nopreCompileJSPs -installed.ear.destination $(APP_INSTALL_ROOT)/%WAS_HOST%Network -distributeApp -nouseMetaDataFromBinary -nodeployejb -createMBeansForResources -noreloadEnabled -deployws -validateinstall warn -noprocessEmbeddedConfig -filepermission .*\.dll=755#.*\.so=755#.*\.a=755#.*\.sl=755 -noallowDispatchRemoteInclude -noallowServiceRemoteInclude -asyncRequestDispatchType DISABLED -nouseAutoLink -MapModulesToServers [[ %MODULE_NAME% %WAR_FILE%,WEB-INF/web.xml WebSphere:cell=%WAS_HOST%Network,cluster=%CLUSTER%+WebSphere:cell=%WAS_HOST%Network,node=%WEB_NODE%,server=%WEB_NODE% ]]]' )"
从 Windows 上的构建机器发出。其中WAS_HOST=MySrvrA.mycomp.com
当运行这个命令时,我得到了
WASX7209I:使用 SOAP 连接器连接到节点 eagnmncom0cbbManager 上的进程“dmgr”;进程类型为:DeploymentManager WASX7015E: 异常运行命令:“AdminApp.update ...
....
异常信息: com.ibm.websphere.management.filetransfer.client.TransferFailedException java.net.UnknownHostException: java.net.UnknownHostException: MySrvrA
WebSphere App 服务器在 Linux 上,/etc/hosts 文件包含以下内容:
IP-Address Full-Qualified-Hostname Short-Hostname
#
127.0.0.1 本地主机
特殊 IPv6 地址 ::1 localhost ipv6-localhost ipv6-loopback
fe00::0 ipv6-localnet
ff00::0 ipv6-mcastprefix ff02::1 ipv6-allnodes ff02::2 ipv6-allrouters ff02::3 ipv6-allhosts
56.xxx.xxx.xxx MySrvrA.mycomp.com MySrvrA
只能通过全限定主机名通过 Internet 访问此服务器。
为了解决问题,我有
1) 运行命令
call wsadmin -conntype SOAP -host %WAS_HOST% -port %WAS_PORT% -user %WAS_USER% -password !WAS_PASSWORD! -lang jython -c "print Help.help()"
这行得通,它应该证明从构建机器到 WAS 服务器的连接良好。
2) 为了进一步证明 AdminApp.update 及其解析参数有效,我已经完整运行了 AppAdmin.update:
AdminApp.update('%APP_NAME%', 'app', '[ -operation update -contents %EAR_FILE% -usedefaultbindings -defaultbinding.virtual.host default_host -nopreCompileJSPs -installed.ear.destination $(APP_INSTALL_ROOT)/%WAS_HOST%Network -distributeApp -nouseMetaDataFromBinary -nodeployejb -createMBeansForResources -noreloadEnabled -deployws -validateinstall warn -noprocessEmbeddedConfig -filepermission .*\.dll=755#.*\.so=755#.*\.a=755#.*\.sl=755 -noallowDispatchRemoteInclude -noallowServiceRemoteInclude -asyncRequestDispatchType DISABLED -nouseAutoLink -MapModulesToServers [[ %MODULE_NAME% %WAR_FILE%,WEB-INF/web.xml WebSphere:cell=%WAS_HOST%Network,cluster=%CLUSTER%+WebSphere:cell=%WAS_HOST%Network,node=%WEB_NODE%,server=%WEB_NODE% ]]]' )
直接在 WAS 服务器上。它可以工作,并且应该证明 AdminApp.update 及其选项和参数是好的。
在我看来,在 SOAP 部署中,AdminApp.update 截断了 WAS_HOST 并且不使用 Full-Qualified-Hostname。
我做错了什么,我该如何解决?
我有另一台机器可以通过短主机名从 Internet 访问,相同的命令行可以在 SOAP 连接器上完美运行。
【问题讨论】:
标签: soap deployment websphere