wsadmin adminApp.update java.net.UnknownHostException Full-Qualified-Hostname

时间:2017-03-29 16:41:44

标签: soap deployment websphere

尝试通过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连接器。

1 个答案:

答案 0 :(得分:0)

事实证明,安全限制会导致问题。

目标WAS服务器位于DMZ .com中,而构建计算机位于蓝色.xxx中,根据组织的安全策略,不允许从.xxx到.com的文件传输。

将目标WAS服务器添加到构建计算机的C:\ Windows \ System32 \ Drivers \ etc \ hosts后,部署成功。