一、使用背景
有這么一個需求,后端也就通過SuperMap iDesktop或數據庫更新了新增或更新某個數據地理信息后,服務端也就是SuperMap iServer無法實時查看到更新的數據,原因是SuperMap iServer沒有主動監測第三方修改數據的變化(使用SuperMap iServer接口增刪改無該問題)
解決方式要么通過重啟SuperMap iServer解決,要么通過刪除服務重新發布解決,但是這兩種版本都比較麻煩,SuperMap iServer 10.1.3版本中可以通過調用SuperMap iServer Rest API的方式進行刷新工作空間。
二、SuperMap iServer環境
2.1 使用SuperMap iServer版本
官網10.1.3及以上已經同步該問題,建議使用官網正式版本。
以下為10.1.2臨時包:
- Linux:supermap_iserver_1012_19721_5526_linux64_deploy.tar.gz
- Windows:supermap_iserver_1012_19721_5497_win64_deploy.zip
下載地址:
- 鏈接:https://pan.baidu.com/s/1OhI72ebiCgRB_V_Y4QrUpg
- 提取碼:kpmo
2.2 使用方法
2.2.1 修改SuperMap iServer配置
修改%SuperMap iServer安裝目錄%\webapps\iserver\WEB-INF\iserver-system.xml
- checkDatasourceConnectionInterval 檢查“數據庫型 工作空間”是否改變或“數據庫型數據源”是否斷開的時間間隔,單位為秒,默認30s
- refreshDatasource 設置是否開啟刷新數據庫型數據源,默認為false
修改成以下配置:
<checkDatasourceConnectionInterval>3</checkDatasourceConnectionInterval>
<refreshDatasource>true</refreshDatasource>
修改完成后,重啟SuperMap iServer服務。
2.2.2 數據更新后,通過SuperMap iServer RestAPI代碼刷新工作空間內容
1. 通過RestAPI操作必須先申請iServer Token
申請地址:
http://IP:8090/iserver/services/security/tokens

2.刷新工作空間
請求URL:
http://IP:8090/iserver/manager/workspaces/workspacereload.rjson?token=
POST請求
{
"workspaceConnectionInfo": "/opt/zhui.sxwu",
"isForce": true,
"datasets": {
"pggis": ["region_sum"]
}
}
請求體說明:
- workspaceConnectionInfo 文件型工作空間路徑絕對路徑。如果是數據庫類型工作空間,請查看具體請查看SuperMap iServer 幫助文檔,例如oracle工作空間則填寫"server=orcl203;username=test;password=test;type=ORACLE;database=;name=testWorkSpace;driver=null"
- pggis 為需刷新的數據源名稱
- region_sum 為刷新數據集名稱,如果有多個數據源刷新為數組
例如:
1.刷新指定工作空間的內容

2.返回結果為true代表刷新成功

2.2.3 驗證服務
1.數據服務
workspacereload刷新前:

workspacereload刷新后:

2.地圖服務
由於SuperMap iServer默認表述瀏覽(classic/leaflet等)有緩存,故需要使用iClient客戶端進行驗證,且iClient客戶對接地圖出圖設置cacheEnabled: false屬性。
例如:
workspacereload刷新前:

workspacereload刷新后:

(轉發請注明出處:http://www.cnblogs.com/zhangyongli2011/ 如發現有錯,請留言,謝謝)
