尝试通过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:已连接到流程" dmgr"在节点eagnmncom0cbbManager上使用SOAP连接器;进程类型是:DeploymentManager WASX7015E:异常运行命令:" AdminApp.update ...
....
异常信息: com.ibm.websphere.management.filetransfer.client.TransferFailedException java.net.UnknownHostException:java.net.UnknownHostException: MySrvrA
WebSphere App服务器在Linux上,/ etc / hosts文件包含以下内容:
IP地址完全限定主机名短主机名
#
127.0.0.1 localhost
特殊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
此服务器只能通过完整限定主机名访问互联网。
为了解决问题,我有
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连接器。
答案 0 :(得分:0)
事实证明,安全限制会导致问题。
目标WAS服务器位于DMZ .com中,而构建计算机位于蓝色.xxx中,根据组织的安全策略,不允许从.xxx到.com的文件传输。
将目标WAS服务器添加到构建计算机的C:\ Windows \ System32 \ Drivers \ etc \ hosts后,部署成功。