(1) 在A机器上访问B机器上的ArcGIS for Server Manager,切换站点中的任一Tab页面即导致Server账户登出,需重新登录。
问题分析与解决:
首先,重新登录往往意味着token出错。ArcGIS登录过程中token的创建,主要取决于用户名、密码、过期时间和Referer四个要素。其中用户名、密码和Referer都准确无误的情况下,那么导致问题的最大可能就是过期时间即Expiration。
其次,B机器上直接访问 ArcGIS for Server Manager不会出现这一现象。
第三,清除浏览器的缓存无效。
最后,检查A机器和B机器的操作系统时间,两者不一致。将A机器和B机器的系统时间修改一致后,问题解决。
(2) 站点存在的情况下,访问ArcGIS for Server Manager,依然跳转到创建站点的页面。
问题分析与解决:
访问ArcGIS Server Manager时,系统会首先读取【ArcGIS for Server安装目录】\framework\etc下的config-store-connections.xml。而后根据这一文件的信息,找到对应的configure-store目录,进而获取其他信息。
针对这一问题,经排查,config-store-connections.xml文件由于未知原因缺失,因此,直接增加这一文件即可。config-store-connections.xml文件的具体内容如下:
注:connectionString项的值和实际配置的configure-store路径相一致。
备注:问题的发现和解决基于ArcGIS for Server 10.3
(3) ArcGIS for Server系统服务无法启动,报JSONObject异常。
服务器断电后再次开机,ArcGIS for Server系统服务无法启动。手动启动服务后,服务状态随即自动变为Stop状态。
日志文件service_error.log中的错误信息如下:
java.lang.RuntimeException: com.esri.arcgis.discovery.json.JSONException: A JSONObject text must begin with '{' at character 1 of
at com.esri.arcgis.discovery.logging.impl.LogService.init(LogService.java:325)
at com.esri.arcgis.discovery.logging.impl.LogService.<init>(LogService.java:96)
at com.esri.arcgis.discovery.nodeagent.impl.NodeAgent.registerLogService(NodeAgent.java:555)
at com.esri.arcgis.discovery.nodeagent.impl.NodeAgent.start(NodeAgent.java:257)
at com.esri.arcgis.discovery.nodeagent.impl.Main.start(Main.java:52)
Caused by: com.esri.arcgis.discovery.json.JSONException: A JSONObject text must begin with '{' at character 1 of
at com.esri.arcgis.discovery.json.JSONTokener.syntaxError(JSONTokener.java:450)
at com.esri.arcgis.discovery.json.JSONObject.<init>(JSONObject.java:178)
at com.esri.arcgis.discovery.json.JSONObject.<init>(JSONObject.java:276)
at com.esri.arcgis.discovery.logging.LogConfig.fromJSONString(LogConfig.java:186)
at com.esri.arcgis.discovery.logging.impl.LogService.init(LogService.java:284)
... 4 more
com.esri.arcgis.discovery.nodeagent.NodeAgentException: java.lang.RuntimeException: com.esri.arcgis.discovery.json.JSONException: A JSONObject text must begin with '{' at character 1 of
at com.esri.arcgis.discovery.nodeagent.impl.NodeAgent.start(NodeAgent.java:268)
at com.esri.arcgis.discovery.nodeagent.impl.Main.start(Main.java:52)
Caused by: java.lang.RuntimeException: com.esri.arcgis.discovery.json.JSONException: A JSONObject text must begin with '{' at character 1 of
at com.esri.arcgis.discovery.logging.impl.LogService.init(LogService.java:325)
at com.esri.arcgis.discovery.logging.impl.LogService.<init>(LogService.java:96)
at com.esri.arcgis.discovery.nodeagent.impl.NodeAgent.registerLogService(NodeAgent.java:555)
at com.esri.arcgis.discovery.nodeagent.impl.NodeAgent.start(NodeAgent.java:257)
... 1 more
Caused by: com.esri.arcgis.discovery.json.JSONException: A JSONObject text must begin with '{' at character 1 of
at com.esri.arcgis.discovery.json.JSONTokener.syntaxError(JSONTokener.java:450)
at com.esri.arcgis.discovery.json.JSONObject.<init>(JSONObject.java:178)
at com.esri.arcgis.discovery.json.JSONObject.<init>(JSONObject.java:276)
at com.esri.arcgis.discovery.logging.LogConfig.fromJSONString(LogConfig.java:186)
at com.esri.arcgis.discovery.logging.impl.LogService.init(LogService.java:284)
... 4 more
日志文件service.log中如下信息:
Mon Nov 09 17:24:42 PKT 2015:Start NodeAgent.start().
Mon Nov 09 17:24:42 PKT 2015:Loading all observers.
Mon Nov 09 17:24:43 PKT 2015:Invoking beforeStart() for all observers.
WARNING: Could not connect to Log service. Writing log message to console.
<Msg time="2015-11-09T17:24:43,296" type="DEBUG" code="9999" source="Admin" process="4024" thread="1" methodName="" machine="" user="" elapsed="">Loading all observers.</Msg>
Mon Nov 09 17:24:57 PKT 2015:Starting RMI connector for NodeAgent.
Mon Nov 09 17:24:58 PKT 2015:Registering NodeAgent as JMX bean.
Mon Nov 09 17:24:58 PKT 2015:Registering and starting log service.
问题分析与解决:
根据上述log信息中提到(1)json对象以及(2)service.log的Registering and starting log service,可判断这一错误的出现是由某个与log有关的json文件导致的。
其次,日志中提到A JSONObject text must begin with '{' at character 1 of,说明在json文件中可能由于字符编码或其他原因导致读取json文件读取错误
基于上述判断以及进一步的分析,问题可定位至【ArcGIS Server】安装目录\framework\etc下的arcgis-logsettings.json文件。通过向这一文件开头输入其他非{字符,从而可浮现类似情况,即ArcGIS Server 系统服务启动后自动关闭。
因此,修改arcgis-logsettings.json文件,确保其符合正确的格式。具体格式如图所示。
备注:问题的发现和解决基于ArcGIS for Server 10.1