1. 程式人生 > >Tomcat 本地配置Arcgis api for js 伺服器

Tomcat 本地配置Arcgis api for js 伺服器

版本說明

使用的是最新的V4.9版本Arcgis api for js.
解壓後目錄如下圖所示:
arcgis api for js

Tomcat配置

1,拷貝arcgis_js_api到Tomcat的webapps目錄下
拷貝api
2,
把上述arcgis_js_api/library/4.9/dojo/dojs.js和arcgis_js_api/library/4.9/init.js這兩個檔案中的
[HOSTNAME_AND_PATH_TO_JSAPI]都替換為http://192.168.31.102:8080/arcgis_js_api/library/4.9/
其中192.168.31.102:8080為tomcat伺服器的ip和埠。
重啟tomcat伺服器
3,然後把前端程式碼原來通過CDN的引用改一下

    <!--<link rel="stylesheet" href="https://js.arcgis.com/4.9/esri/css/main.css">-->
    <!--<script src="https://js.arcgis.com/4.9/"></script>-->
      <link rel="stylesheet" href="http://192.168.31.102:8080/arcgis_js_api/library/4.9/esri/css/main.css">
      <script src="http://192.168.31.102:8080/arcgis_js_api/library/4.9/init.js"></script>

4,測試
瀏覽器輸入 http://192.168.31.102:8080/arcgis_js_api/library/4.9/init.js
若是能訪問,則說明部署成功
5,Run
卻發現介面是亂的,F12一看,報錯如下:
has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource

跨域訪問解決

1,根據上述報錯很容易找到tomcat伺服器跨域解決方案:https://enable-cors.org/server_tomcat.html
即在tomcat安裝目錄下的conf/web.xml中新增

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

需要注意的是,如果web.xml裡面還有其它filter配置,需要把上述配置放在最上面

2,然而搞死,依舊報同樣的錯
3,最終找到原因
原來跨域需要依賴兩個jar庫,即cors-filter.jar和java-property-utils.jar。
tomcat預設lib目錄下並沒有這兩個庫。真的是神坑啊!!!
好心的網友分享了java-property-utils-1.9.jar和cors-filter-1.7.jar這兩個庫,且反編譯發現這兩個庫的名稱空間為com.thetransactioncompany.cors
拷貝需要的jar檔案到lib目錄下,修改一下上述程式碼段org.apache.catalina.filters為com.thetransactioncompany.cors
重啟tomcat

順利解決問題!!!

其它

1,網友還提供了一種把arcgis api for js直接配置到專案中的方法:https://blog.csdn.net/qq_36375770/article/details/80019651
2,arcgis api for js 使用arcgis server跨域:
https://blog.csdn.net/GISuuser/article/details/81099355