基于 Jetty9.4 的 GeoServer 配置与部署

GeoServer2.16.exe安装包,默认使用 Jetty 发布地图服务。
本篇介绍了通过 jetty 与 GeoServer 编译包 geoserver.war 发布地图服务。
配置环境:windows10;jetty-distribution-9.4.49.v20220914;GeoServer2.20.6;

1 安装与配置 Java

与 tomcat 一样,jetty 运行也需要 java 环境。
进入Java官网 https://www.java.com/zh_CN/ 或者直接百度搜索 Java,按操作系统,下载对应版本并安装。

配置环境变量JAVA_HOME为Java安装的根路径

将 Java 的 bin 与 jre 路径加入到 Path 环境变量中

通过快捷键win+r输入cmd,启动控制台,执行java -version 出现Java版本号,说明配置成功。

2 安装与配置 Jetty

通过Jetty官网https://www.eclipse.org/jetty/下载Jetty。

本次使用的是 9.4 版本,并没有用11、10版本是因为版本差异较大,如:
在9.4版中,通过 start.ini配置文件,找到注释行 # jetty.http.port=8080,修改为 jetty.http.port=8086,实现修改服务端口,但是在11、10版中没有发现该文件

3 安装与配置 GeoServer

通过GeoServer官网https://geoserver.org/release/maintain/下载 web包。

将 geoserver.war 放入 jetty 的 webapps 文件夹,同时建立与 webapps 同级的 work 文件夹。

打开 cmd, 进入 jetty 根目录下,执行java -jar start.jar运行 jetty,同时发现 work 文件夹中存在了 geoserver.war 解压的文件。
PS: 这就是 jetty 和 tomcat 不太一样的地方,即 war包不会解压到 webapps下,会解压到 work 文件夹中(如果没有 work 文件夹,则存在系统临时目录去)。

在 work 文件夹中,进入 geoserver 解压文件夹,找到WEB-INF/web.xml文件,编辑web.xml内容,修改geoserver管理数据与缓存切片的位置如下:

<context-param>
    <param-name>GEOSERVER_DATA_DIR</param-name>
    <param-value>C:\geoserver_data</param-value>
</context-param> 

同时,也可以将 geoserver 其它功能扩展的jar包拷贝到WEB-INF/lib文件夹中。

4 解决跨域访问

通过上面方法,发布 GeoServer 地图切片,在前端访问的时候,会出现跨域问题。
打开上面提到的,work 文件夹下,geoserver 服务的WEB-INF/web.xml文件,找到下面两段被注释的代码,并解除注释

<!-- Uncomment following filter to enable CORS in Jetty. Do not forget the second config block further down.
    <filter>
      <filter-name>cross-origin</filter-name>
      <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
      <init-param>
        <param-name>chainPreflight</param-name>
        <param-value>false</param-value>
      </init-param>
      <init-param>
        <param-name>allowedOrigins</param-name>
        <param-value>*</param-value>
      </init-param>
      <init-param>
        <param-name>allowedMethods</param-name>
        <param-value>GET,POST,PUT,DELETE,HEAD,OPTIONS</param-value>
      </init-param>
      <init-param>
        <param-name>allowedHeaders</param-name>
        <param-value>*</param-value>
      </init-param>
    </filter>
-->
<!-- Uncomment following filter to enable CORS 
    <filter-mapping>
        <filter-name>cross-origin</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
-->

重启 jetty。如果发现 geoserver 无法正常启动,则在 Jetty 根目录下的lib文件夹中,找到jetty-servlets-xxx.jarjetty-util-xxx.jar两个jar包(xxx为对应版本号)

将上面的两个jar包拷贝到 work 文件夹下,geoserver 服务的WEB-INF/lib文件夹中,再次重启 jetty。

原文地址:http://www.cnblogs.com/lqqgis/p/16852825.html

发表评论

您的电子邮箱地址不会被公开。