• 把MapXtreme for Java迁移到Tomcat 5.5上


    MapXtreme for Java 4.7.1,默认集成了 Tomcat 4.1.18,版本比较低。在实际工程中,可能需要升级到更高版本。本文解释了升级到 5.5.15 的过程。

    一、升级过程

    1、下载 Tomcat 5.5.15,下载地址为:http://tomcat.apache.org/

    2、把 Tomcat 5.5.15 解压到 MapXtreme 的安装目录下,假设解压后的目录名称为:
       E:\MapInfo\MapXtreme-4.7.1\Tomcat-5.5

    3、把 E:\MapInfo\MapXtreme-4.7.1\Tomcat-4.1\webapps 目录下的所有内容都拷贝到高版本的 Tomcat 中去:E:\MapInfo\MapXtreme-4.7.1\Tomcat-5.5\webapps

    4、修改 E:\MapInfo\MapXtreme-4.7.1\bin 目录下的 startup.bat 和 shutdown.bat,把其中的“Tomcat-4.1”全部替换成“Tomcat-5.5”(我的实际做法是:把原始的 startup.bat 和 shutdown.bat 重命名为 startup41.bat 和 shutdown41.bat,改动过后的命名为 startup55.bat 和 shutdown55.bat)

    5、(可选)删除 E:\MapInfo\MapXtreme-4.7.1\Tomcat-4.1 目录(我就没删,保留两个版本,方便调试)

    二、过程分析

    其实 MapXtreme for Java 4.7.1 并没有用到 Tomcat 的太多功能,只是把它当作一个 Web Container。

    在 MapXtreme-4.7.1/bin 目录下,startup.bat 和 shutdown.bat 也是调用具体的 Tomcat/bin/Catalina.bat,此时只要把目录换掉,即可完成正常的启动和停止。

    三、遗留问题

    1、如果要把 MapXtreme 迁移到其它 Web Container 上,例如 WebLogic,则有一定的麻烦。因为 MapXtreme-4.7.1/bin 下的那两个 exe 文件,即 MapXtreme 自身的管理程序,是通过调用 Tomcat 自带的名称为 manager 的 WebApp 来完成的。WebLogic 没有这个 WebApp。

    解决办法:保留 Tomcat 和 WebLogic 双环境。把 wars 按正常的方式部署到 WebLogic 中,并对外提供地图访问服务;只有当需要进行管理操作(例如修改地图)时,才去启动 Tomcat 版本,当管理操作完成后,关闭 Tomcat。此时,地图数据等已经被存储到一个独立的目录(例如 E:\MapInfo\MapXtreme-4.7.1\examples\server\data)下去了,该目录与 Tomcat 或 WebLogic 都无关。

    该解决方法仅仅是一种猜测,没有实际验证过。也许不需要这么麻烦。

    2、升级后,自带的例子中,HTMLEmbeddedMapServlet 的页面上不能正常显示中文(我的操作系统是英文的,在中文操作系统上可能不会出问题),出现许多问号。这是因为在该 Servlet 的源码(E:\MapInfo\MapXtreme-4.7.1\examples\server\java\servlet\HTMLEmbeddedMapServlet.java)的第 380 行有一句“res.setLocale(req.getLocale());”,Tomcat 4.1 和 Tomcat 5.5 对该句的处理方式不一样。

    在编写自已的程序时,该处不使用 req.getLocale(),而是指定一个 Locale 即可。

    3、启动 Tomcat 时,有时会停顿很长时间。

    解决方法:先强制关闭停顿着的窗口,然后把 Tomcat 目录下的 work 目录的内容全部删除掉,再启动 Tomcat(通过 MapXtreme-4.7.1/bin/startup.bat 启动)就不会发生停顿了。

  • 相关阅读:
    全局变量-静态变量
    System.Web.Optimization 找不到引用,教你如何解决?
    CSS text-decoration 属性
    HTML 5 <span> 标签
    [VS]
    C# 条件表达式max=(a>b)?a:b;含义
    vs 2017 Integrated Security 为sspi 含义
    Visual studio 利用Nuget 控制台安装已经下载好的插件
    使用INTERSECT运算符
    Oracle DB 使用子查询来解决查询
  • 原文地址:https://www.cnblogs.com/googlegis/p/2978958.html
Copyright © 2020-2023  润新知