项目完成了部分功能,需要把项目放到公网上,方便演示讨论。本来以为挺简单的,直接将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,虽然项目能够运行,但不知道具体的影响有哪些。这些问题可能还需要在实践中摸索。

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

war包部署到腾讯云中报404的排错经历的更多相关文章

  1. 怎样将本地web数据库项目部署到腾讯云服务器上?

    怎样将本地web数据库项目 部署到腾讯云服务器上? 1.本地计算机的工作: 1.1用eclipse或者myeclipse做好一个web项目,可以只做一个数据库的增删改查,本地部署到Tomcat服务器, ...

  2. 怎样将本地web项目部署到腾讯云服务器上?

    怎样将本地web项目部署到腾讯云服务器上? 1.本地计算机的工作: (1).用eclipse新建一个web项目,然后在webcontent下新建一个index.html,然后在本地部署到Tomcat服 ...

  3. eclipse项目转移至IDEA与IDEA tomcat报错(idea自带tomcat版本太高)与war包部署到win服务器与idea提交git的总结

    eclipse导出项目到idea时,不要导出target: idea打开eclipse项目后,出现junit找不到的问题,原因是jar包缺失,而maven配置的低版本的junit也显示找不到,解决办法 ...

  4. struts2使用Convention Plugin在weblogic上以war包部署时,找不到Action的解决办法

    环境: struts 2.3.16.3 + Convention Plugin 2.3.16.3 实现零配置 现象:以文件夹方式部署在weblogic(10.3.3)上时一切正常,换成war包部署,运 ...

  5. 将war包部署到服务器的详细步骤

    第一步: 先将项目打包成war文件,也就是将在项目上单击鼠标右键,选择Export: 选择WAR file,点击下一步: 会出现如下所示,选择你要保存的位置,点击完成: 在你所选择的地方会有个如下所示 ...

  6. XWIKI离线WAR包部署(LDAP登录)

    背景 接任务部署一个wiki, 要求: java语言开发, 开源, 内网部署; 需要支持: 大文件上传(300m左右), 所见即所得(wycwyg), 导出, LDAP, 评论与权限. 通过一个好用的 ...

  7. SpringBoot之打成war包部署到Tomcat

    正常情况下SpringBoot项目是以jar包的形式,正常情况下SpringBoot项目是以jar包的形式,并且SpringBoot是内嵌Tomcat服务器,所以每次重新启动都是用的新的Tomcat服 ...

  8. springboot 学习之路 5(打成war包部署tomcat)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  9. Windows下war包部署到Linux下Tomcat出现的问题

    最近,将Windows下开发的war包部署到Linux下的Tomcat时报了一个错误:tomcat error in opening zip file.按理说,如果正常,当把war包复制到webapp ...

随机推荐

  1. 自己动手写Redis客户端(C#实现)2 - SET请求和状态回复(set)

    Redis请求协议的一般形式: *<参数数量> CR LF $<参数 的字节数量> CR LF <参数 的数据> CR LF ... $<参数 N 的字节数量 ...

  2. nginx学习.第一部分

    1.nginx的版本发布历史 2015年支持thread pool提供stream四层反向代理支持reuseport特性,支持http v2协议.完全可以替代LVS 2016年支持动态模块 2.ngi ...

  3. 大数据学习之hdfs集群安装部署04

    1-> 集群的准备工作 1)关闭防火墙(进行远程连接) systemctl stop firewalld systemctl -disable firewalld 2)永久修改设置主机名 vi ...

  4. zookeeper(1)-简单介绍

    参考:  https://www.cnblogs.com/wuxl360/p/5817471.html   zookeeper集群搭建 zookeeper集群原理和搭建 zookeeper集群搭建3 ...

  5. 日常报错记录2: MyBatis:DEBUG [main] - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.------------ Cause: java.lang.NoSuchMethodException: com.offcn.dao.ShopDao.<init>()

     直接上干货:  报错归纳1: DEBUG [main] - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4 ...

  6. php八种常用函数

    八种常用的数学函数: ①  abs(x):求绝对值 ②  ceil(x),floor(x):向上/下取最接近的整数 ③  cos(x),sin(x),tan(x):三角函数 ④  min(),max( ...

  7. 南京邮电大学//bugkuCTF部分writeup

    WEB 1.签到题 nctf{flag_admiaanaaaaaaaaaaa} 右键查看源代码或按f12即可. 2.这题不是web nctf{photo_can_also_hid3_msg} 下载图片 ...

  8. python操作kafka(confluent_kafka 生产)

    #!/usr/bin/python # -*- coding:utf-8 -*- from confluent_kafka import Producer import json import tim ...

  9. CodeForces - 777B Game of Credit Cards 贪心

    题目链接: http://codeforces.com/problemset/problem/777/B 题目大意: A, B玩游戏,每人一串数字,数字不大于1000,要求每人从第一位开始报出数字,并 ...

  10. Markdown初使用

    Markdown是一种纯文本格式的标记语言.通过简单的标记语法,它可以使普通文本内容具有一定的格式. 相比WYSIWYG编辑器 优点:1.因为是纯文本,所以只要支持Markdown的地方都能获得一样的 ...