学习Portal过程中碰到无法打开地图一个案例,将处理过程记录一下
环境:
机器1:
OS: Windows7
ArcGIS Portal 10.5
ArcGIS WebAdaptor 10.5
机器名:testpc.esri.com
IP:192.168.220.144
机器2:
OS: Windows 10
ArcGIS Server 10.5
ArcGIS WebAdaptor 10.5
机器名:desktoptest.esri.com
IP:192.168.100.112
机器2上的ArcGIS Server已经作为机器1上的Portal联合服务器。
症状: 使用Portal的Map Viewer工具打开某个WMS服务,报如下错误:
从错误上发现是服务https://desktoptest.esri.com/arcgis/services/SampleWorldCities/MapServer/WMSServer无法访问了。
直接访问该服务发现报404错误。
不用443端口,直接使用6443端口发现可以直接访问。由此可以判断是443端口的问题,那应该是Tomcat的问题了。
查看Tomcat的启动日志,发现如下错误:
二月 08, 2017 4:03:55 下午 org.apache.catalina.core.StandardService initInternal
严重: Failed to initialize connector [Connector[HTTP/1.1-443]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-443]]
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:560)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:840)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.startup.Catalina.load(Catalina.java:642)
at org.apache.catalina.startup.Catalina.load(Catalina.java:667)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:253)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
at org.apache.catalina.connector.Connector.initInternal(Connector.java:980)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
… 12 more
Caused by: java.net.BindException: Address already in use: JVM_Bind :443
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:413)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:665)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:452)
at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:978)
… 13 more
从日志中能够看到是443端口被别的应用占用了。
使用netstat和tasklist查看443被那个进程占用了
C:\windows\system32>netstat -abno|find "443"
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 3164
TCP 0.0.0.0:6443 0.0.0.0:0 LISTENING 7448
TCP 192.168.100.112:59016 180.97.34.148:443 ESTABLISHED 7240
TCP [::]:443 [::]:0 LISTENING 3164
TCP [::]:6443 [::]:0 LISTENING 7448
C:\windows\system32>tasklist|find "3164"
vmware-hostd.exe 3164 Services 0 45,064 K
原来是vmware的监护进程占用了443端口。
停止wmwarehostd进程
C:\windows\system32>net stop vmwarehostd
VMware Workstation Server 服务正在停止.
VMware Workstation Server 服务已成功停止。
重启Tomcat后,一切正常。