【服务器相关】项目部署后问题汇总

本文分享了作者在进行JavaWeb项目开发过程中的经验教训,重点介绍了处理tomcat端口占用、服务器假死及重启防火墙后重定向失效等问题的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

最近做了两个Java Web项目【微信公众号开发】,一个设计时间花了大半,编码没用很久,其他的都用在测试上了;另外一个设计(设计也总在改,?‍),大部分时间都花在测试上了。 碰到了不少的坑,这里就自己记录的服务器相关的写下来,方便查看吧。

问题一、tomcat端口占用

方法一:

netstat -nltp | grep 8005
Netstat -nltp | grep 8080
杀掉占用端口的进程

方法二:

$JAVA_HOME/jre/lib/security/Java.security 文件中 securerandom.source 配置项
securerandom.source=file:/dev/random
改为:
securerandom.source=file:/dev/urandom

Linux服务器中查看java的安装路径
https://www.cnblogs.com/jasonzeng/p/8302171.html

问题二.tomcat服务器假死(崩溃)

症状:访问网站时,所有静态资源可以访问,凡是需要从数据库获取的数据全部无法加载出来。

具体情况:点击页面欲加载数据,页面没有反应,依然只有静态资源显示,但服务器日志没有报错

原因:

openSession创建session时autoCloseSessionEnabled参数为false,即在事物结束后不会自动关闭session,需要手动关闭,如果不关闭将导致session关联的数据库连接无法释放,最后资源耗尽而使程序宕掉。    
getCurrentSession创建session时autoCloseSessionEnabled,flushBeforeCompletionEnabled都为true,并且session会同sessionFactory组成一个map以sessionFactory为主键绑定到当前线程。
getCurrentSession():从上下文(配置文件current_session_context_class: thread 使用Connection自动管理;jta(java transaction api) 由Application Server提供的分布式事务管理,Tomcat本身不具备此能力,JBoss、WebLogic具备)找,如果有,则用旧的,否则创建新的,事务提交自动Close;

总之, getCurrentSession () 使用当前的session
openSession() 重新建立一个新的session
而后端代码DAO层使用了getSessionFactory().openSession(),这种写法每次都会建立一个新的连接,但是需要手动关闭close(),没有关闭最后导致资源耗尽而宕机;而getSessionFactory().getCurrentSession()会在上下文中找到一个连接,如果没有则新建,并且用完后会自动关闭。

解决方法:将openSession()改成getCurrentSession()

建议:在一个应用程序中,如果DAO 层使用Spring 的hibernate 模板,通过Spring 来控制session 的生命周期,则首选getCurrentSession ()。

问题三:

重启防火墙后的重定向就失效了!!!

404页面如下:

在这里插入图片描述

原因:

未开启防火墙端口;

查看网上的资料是防火墙把端口拦截了,然而并不是。。 弄了半天,就是tomcat卡死然后杀掉进程,重启tomcat就可以了。。

思考:为什么重定向失效出现上面的404页面?

这可能又是一个坑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值