zoukankan      html  css  js  c++  java
  • geoserver源码maven编译相关问题

    1、登陆失败跳转404错误

    登陆失败后指向的路径为:

    http://192.168.15.97:8080/hgisserver/web/wicket/bookmarkable/org.geoserver.web.GeoServerLoginPage?error=true 但在url加密模式下,该路径被当作密文处理,指向的资源便不存在,这是geoserver源码的bug,未找到url加密模式的处理逻辑,暂时禁用url加密设置,登陆失败页面可以正常访问;

    加密路径如下:

     

    禁用后正常:

     

    升级处理:

    org.geoserver.web.DynamicCryptoMapper

    若在EncryptUrlParams模式下会对除登陆失败页面的所有页面Url路径和参数进行加密转换,而在解析的时候却会获取cryptoMapper(通过判断GeoServerSecurityManager是否采用EncryptUrlParams)对Url进行解密计算,所以登陆失败页面解析失败;

    修改:在DynamicCryptoMapper类中获取CryptoMapper时判断Url中是否包含“LoginPage”,包含则全部采用plainMapper处理,即不对Url进行解密;不包含则通过判断是否采用EncryptUrlParams决定是否解密;

     

    2、geoserver页面显示的服务器IP不对:

    在gs-wps-core和gs-web-core中使用的查找函数有问题,修改如下:

    //add by lxh for search IP

    for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {

        NetworkInterface intf = en.nextElement();

        String name = intf.getName();

        if (!name.contains("docker") && !name.contains("vir") && !name.contains("lo")) {

            for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {

                InetAddress inetAddress = enumIpAddr.nextElement();

                if (!inetAddress.isLoopbackAddress() && !(inetAddress instanceof Inet6Address)) {

                         return inetAddress;

                }

            }

        }

     

    修改代码后,通过maven编译需更新wps模块,若出现Process Status页面的node域值仍未更新:

    经检查发现,wps模块在extension文件夹中,该文件下的pom.xml未包含类似的编译模块信息

    所以maven编译时若无特别指定,所有的extension模块都不会被编译。

    Extension文件夹中通过profiles标签定义了各种profile ,供maven编译时指定编译的模块,如mvn clean install –P wps –Dmaven.test.skip=true,通过-P指定要编译的profile的id。

    故只需要修改编译maven命令即可,jenkins中配置Build命令如下:

     

    在Maven中-DskipTests和-Dmaven.test.skip=true的区别如下:

    -DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。

     -Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。

    maven顶级pom和子pom版本号批量修改

    当一个版本发布,新起一个版本时,我们只需要手动修改一下项目中pom.xml的版本号就可以了。但是如果这个maven项目有很多的子模块项目,那么一个个手动的去改就显得费时费力又繁琐了。还好,maven为我们提供了以下三个命令(需要进入顶级pom所在的目录)来帮助我们解决这个问题。

    #1 设置新的版本号

    mvn versions:set -DnewVersion=3.6.2.0

    设置新版本号后,需在最外层pom.xml文件中更改gs.version的值为新版本号(3.6.2.0),在使用-Dmaven.test.skip=true选项进行编译安装时,会出现找不到各jar包新版本号的tests包错误,要么去掉所有pom文件中对tests的版本依赖(太繁琐),或者第一次不跳过test模式。

    #2 当新版本号设置不正确时可以撤销新版本号的设置

    mvn versions:revert

    extension模块不会自动撤销,需在extension文件夹中建立备份pom文件pom.xml.versionsBackup,原pom.xml.versionsBackup经过上述命令已经被恢复了,需重建,并将版本号改为前面设置的新版本号(3.6.2.0),在extension目录下运行

    mvn versions:revert -P allExtensions

    #3 确认新版本号无误后提交新版本号的设置

    mvn versions:commit

  • 相关阅读:
    MySQL索引优化入门
    优雅实现订单关闭及定时器的使用
    web.xml详解
    多个Tomcat之间实现Session共享
    tomcat8.0 基本参数调优配置
    tomcat部署会碰到的问题
    Centos7以上的版本 mysql 无法启动,无法停止问题
    tomcat 重启报错unregister mbean error javax.management.InstanceNotFoundException
    日线做多,15min做空的情况收集
    葛兰碧均线法则
  • 原文地址:https://www.cnblogs.com/HandyLi/p/8534395.html
Copyright © 2011-2022 走看看