zoukankan      html  css  js  c++  java
  • war包部署到腾讯云中报404的排错经历

    项目完成了部分功能,需要把项目放到公网上,方便演示讨论。本来以为挺简单的,直接将war包放到腾讯云服务器tomcat中,结果报错404,第一次碰到这种情况,于是想办法解决,花了一天的时间,终于解决了问题,和大家分享一下解决的过程,希望对大家有所帮助。解决的途径还是靠百度以及参考资料,分析可能的原因,然后不断测试,直到问题解决。

    一 问题描述

    项目使用的开发工具是IntelliJ IDEA,运行web项目程序,在本地进行测试,页面能够正常打开并且测试结果符合预期。将web项目程序打成了war包,放到局域网服务器的tomcat的webapps目录中,然后重新启动服务器的tomcat,再进行程序功能测试,页面能够正常打开并且测试结果符合预期。将war包放到腾讯云服务器的tomcat的webapps目录中,重新启动tomcat,再进行测试,发现404错误,不能正常定位到程序页面。

    二 问题分析

    由于同一个war包在本地和局域网都能正常运行,而在腾讯云中不能正常运行,所以分析本机、局域网服务器和腾讯云服务器之间的区别,查找不同点。首先是考虑是不是腾讯云的安全机制,对于访问的端口有限制,腾讯云服务器确实有端口访问控制,可以设置开放某些常用端口,比如web服务端口(80,443,8080),SSH登录端口(22),mysql端口(3306)等,端口放开后,问题依然没有解决。第二考虑是不是jdk,tomcat的版本问题,jdk使用的版本都是jdk8,具体版本有点差别,修改为统一的版本。Tomcat的版本情况类似,也修改为统一的版本。版本统一后,测试,问题依旧存在。第三,考虑操作系统的不同对程序的影响,本地和局域网都是在windows环境中,tomcat启动时,都能实时看到tomcat的日志信息,有什么问题一目了然。而腾讯云用的是centos7,linux操作系统,tomcat启动后,实时日志信息不能看到,也就不知道tomcat在启动过程中是否发生了错误,为了实时查看tomcat的日志信息,在重启tomcat后,打开日志文件。

    三 问题解决

    在linux系统,切换到tomcat的bin目录,依次键入

    ./shutdown.sh

    ./startup.sh

    重启tomcat,然后切换到tomcat的logs目录,键入

    tail -f catalina.out

    就可以实时查看tomcat的日志信息,日志信息比较多,不过错误信息也是很明显的,和用开发工具调试的时候碰到的报错信息类似,很容易发现。报错信息的开头,就是如下的一段。

    Unable to register MBean [HikariDataSource (null)] with key 'dataSource'; nested exception is javax.management.InstanceAlreadyExistsException: com.zaxxer.hikari:name=dataSource,type=HikariDataSource

    百度了一下,问题解答定位到了StackOverflow网站,不得不说,StackOverflow上的大牛们确实很热心,有靠谱的回答,试了试,果然管用。

    方法就是在配置文件application.properties中,进行如下设置

    spring.jmx.enabled=false

    重新生成war包,测试,页面能够正常打开,功能也都正常。

    四 一些未解决的疑惑

    虽然问题解决了,但还是有些疑惑的地方,比如同样的war包,在windows环境中能够使用,到了linux环境中报错,具体原因不是太了解。再有就是报错的大概意思是不能注册MBean,解决的办法就是不注册,直接将jmx设置为false,虽然项目能够运行,但不知道具体的影响有哪些。这些问题可能还需要在实践中摸索。

    最后希望对大家调试程序有所帮助,如果有大牛对我提出的疑问,有好的解答,也请不吝赐教。

  • 相关阅读:
    Android 按键消息处理Android 按键消息处理
    objcopy
    SQLite多线程读写实践及常见问题总结
    android动画坐标定义
    Android动画效果translate、scale、alpha、rotate
    Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)
    Flatten Binary Tree to Linked List
    Distinct Subsequences
    Populating Next Right Pointers in Each Node II
    Populating Next Right Pointers in Each Node
  • 原文地址:https://www.cnblogs.com/coodream2009/p/9645502.html
Copyright © 2011-2022 走看看