GeoServer2.17与Jetty9在Windows上的最佳安装实践
1 JDK的选择
我使用了adopted openjdk8.0.252,安装简便,只需添加2个环境变量(JAVA_HOME,JRE_HOME)即可。
我的安装路径:
C:\SDKs\adoptopen-jdk8.0.252
所以环境变量:
| 环境变量名 | 值 |
|---|---|
JAVA_HOME |
C:\SDKs\adoptopen-jdk8.0.252\ |
JRE_HOME |
C:\SDKs\adoptopen-jdk8.0.252\jre |
2 Jetty 9
选择的理由是尝鲜,看看部署起来和tomcat有什么区别,虽然不是后端开发出身,不过喜欢体验新组合新事物。
2.16的geoserver预编译包用的都是jetty了,就是下载的那个带bin字样的zip包。
安装路径:C:\WebServers\jetty-distribution-9.4.28.v20200408
修改端口
默认端口是8080,我打算改成6700
打开安装路径下的start.ini
找到注释行:
# jetty.http.port=8080
解开注释,修改端口:
jetty.http.port=6700
作为Windows服务启动
不想每次都双击start.jar文件,Windows服务是一个不错的选择。
到github上下载一个叫Winsw的小工具,仓库地址:
https://github.com/winsw/winsw
到release页面下载合适的版本即可,把下载到的exe程序放到安装路径下,创建与exe文件名一样的xml文件:
<!-- 假设exe文件名被我改成winsw.exe,那么这个xml的文件名就是winsw.xml -->
<service>
<id>Jetty9</id>
<name>Apache Jetty 9</name>
<description>你的描述</description>
<executable>java</executable>
<arguments>-jar start.jar</arguments>
</service>
id、name、description都可以自己写,只要你认得就可以,id要唯一。
executable是可执行程序,arguments是可执行程序传入的参数,这里就是说用java.exe程序执行参数-jar start.jar。
当然,如果没有JAVA_HOME配置环境变量,那么就要写全java程序的绝对路径了。因为这个xml文件和start.jar同级,start.jar的路径就不需要绝对路径了。
然后打开cmd,定位到安装目录下,执行下列命令:
winsw.exe install
就能安装成Windows服务了:

3 war包安装geoserver
这一步很简单,下载stable版本的geoserver-war包,放到jetty安装目录下的webapps目录下,重启jetty服务,过一会儿,访问这个路径就可以了:
http://localhost:6700/geoserver
4 跨域和gwc、默认数据路径配置
jetty9有个和tomcat9不太一样的地方,就是war包不会解压到webapps下,会解压到一个系统临时目录去。
这对于要增加geoserver插件、修改geoserver配置的任务来说,有点不对劲。
查了查资料,jetty和tomcat对war包的处理方式并不一样。
jetty中处理war包解压的代码是:org.eclipse.jetty.util.resource.JarResource。使用JarInputStream来读取war文件,JarInputStream是首先处理可选的META-INF/MANIFEST.MF文件,也就是说getNextJarEntry方法不可能处理META-INF/MANIFEST.MF文件了,因此jetty会在处理完所有的JarEntry后,自己处理META-INF/MANIFEST.MF文件。但是,这样做的后果就是,不能设置解压出来的META-INF/MANIFEST.MF文件的最后修改时间。
tomcat中处理war包解压的代码:org.apache.catalina.startup.ExpandWar。使用JarFile来读取war文件,这样可以获得war中所有的JarEntry,不需要自己去处理META-INF/MANIFEST.MF文件。
显然,tomcat的做法更合理一些,其保证了解压出来的文件具有和war中文件一样的最后修改时间。
解压到jetty安装目录
在jetty安装目录下创建work文件夹,重启jetty后就能看到war包解压的文件了。

点进去就能找到WEB-INF/web.xml文件了,也能加jar包扩展geoserver了。
跨域很好解决,把WEB-INF/web.xml内有关的配置解开注释即可,与tomcat配置法相同,不再赘述(需要添加额外的jar包请自己下载)。
gwc缓存路径设置
打开WEB-INF/web.xml后,添加一项:

重启后,GWC的缓存路径就重新定向了,妈妈再也不用担心我的webapp越来越肥。
GEOSERVER_DATADIR也一样。
版权所有,自主研究,转载请评论或私信告知。 https://www.cnblogs.com/onsummer/p/12940750.html
更多GIS运维、开发博客见小专栏:https://xiaozhuanlan.com/gishome
GeoServer2.17与Jetty9在Windows上的最佳安装实践的更多相关文章
- windows上zend server安装 报The server encountered an internal error or misconfiguration and was unable to complete your request -解决方法 摘自网络
windows上zend server安装完成后报如下错误: Internal Server Error The server encountered an internal error or m ...
- windows上redis的安装和配置
windows上redis的安装和配置 进入到Redis的根目录D:\Programming\Redis\Redis6379\Redis-x64-3.2.100底下操作: 配置文件启动 redis-s ...
- 在windows上极简安装GPU版AI框架(Tensorflow、Pytorch)
在windows上极简安装GPU版AI框架 如果我们想在windows系统上安装GPU版本的AI框架,比如GPU版本的tesnorflow,通常我们会看到类似下面的安装教程 官方版本 安装CUDA 安 ...
- Windows上Python3.5安装Scrapy(lxml) 以及与twisted有关错误的解决
转载于:http://www.cnblogs.com/silverbullet11/p/4966608.html 常用网址: Python 3.5: https://www.python.org/do ...
- Windows上Python3.5安装Scrapy(lxml)
常用网址: Python 3.5: https://www.python.org/downloads/ Wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlib ...
- Windows上Nginx的安装教程详解
一 背景 为了方便本地的开发和验证,于是整理了这一篇Windows上安装Nginx的博文,建议一般学习还是使用Linux,一般正规公司都是在Linux上安装Nginx服务! 本篇内容相对比较简单,如果 ...
- windows上,python安装非官方包,提示error: Unable to find vcvarsall.bat
在windows机器上安装python非官方包,如果环境只是用于开发,不作任何测试的话,最好的解决办法是: 在Linux上pip安装好之后,把python根目录lib/python3.6/site-p ...
- Windows上Python2.7安装Scrapy过程
需要执行: pip install scrapy pip install requests 在Windows下用pip安装Scrapy报如下错误,看错误提示就知道去http://aka.ms/vcpy ...
- windows上python的安装
一,python3.X的点击式安装 第一次写博客,我就是想记载一下自己对Python的探索过程,理解过程,学习过程,我接触python已经一年多了,但是真正的学习摸索是半年前,现在才走上正轨,这是我刚 ...
随机推荐
- 闲置安卓设备搭建Linux服务器实现外网访问
title: 闲置安卓设备搭建Linux服务器实现外网访问 这是我搭过的第一个博客系统,写贴纪念一下 待博主整理好思路,将今天所用到的全部分享! 好吧,我就是穷.富人靠科技,穷人靠变异.我这种穷人是真 ...
- Windows系统自带的ODBC Data Sources的配置及使用
一直不明白ODBC是个什么东东,虽然一次次碰到,却从没用过,看Wikipedia上的描述,可以访问各种数据库.Excel.CSV等,可以剥离数据库和操作系统依赖,简直神乎其神.不过这样的描述太抽象概括 ...
- js 运动函数篇 (一) (匀速运动、缓冲运动、多物体运动、多物体不同值运动、多物体多值运动)层层深入
前言: 本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽. 本篇文章为您分析一下原生JS写 匀速运动.缓冲运动.多物体运 ...
- webpack插件解析:HtmlWebpackPlugin是干什么的以及如何使用它
HtmlWebpackPlugin是一个出现频率比较高的webpack插件,本文对其作用和配置作一番比较详细的分析(本文的配置均在webpack.config.js中进行). 为何使用它 简单来说,H ...
- jmeter的教学视频
转载于:https://www.cnblogs.com/ios9/p/9769058.html
- Python抓取新浪新闻数据(二)
以下是抓取的完整代码(抓取了网页的title,newssource,dt,article,editor,comments)举例: 转载于:https://blog.51cto.com/2290153/ ...
- Chrome最新版如何安装Proxy SwitchyOmega
由于Chrome的代理设置与windows10的1703及以后的版本不兼容,导致无法使用代理功能,给工作带来了很大的不便.最近发现一款不错的Chrome代理插件Proxy SwitchyOmega,由 ...
- prufer编码学习笔记
prufer 编码 对于一个无根树,他的 prufer 编码是这样确定的: 每次找到编号最小的一个叶子节点,也就是度数为\(1\)的节点,把和它相连的点,加入 prufer 编码序列的末尾,然后把这个 ...
- 1) drf 整体了解
一.接口 """ 1.什么是接口:url+请求参数+响应数据 | 接口文档 2.接口规范: url:https,api,资源(名词复数),v1,get|post表示操 ...
- 还在用迭代器处理集合吗?试试Stream,真香
前言 上一篇博客一文带你深入了解 Lambda 表达式和方法引用我给大家介绍了 Java8 函数式特性中的 Lambda,这篇文章我将继续讨论 stream 流的用法 声明:本文首发于博客园,作者:后 ...