今天遇到了一个很奇怪的问题,搞了半天原来是Linux权限造成的
介绍一下问题,一个订单详情页面请求,如下图,应该正常显示页面
今天遇到的问题是,依然是这么一个url,访问时候却成了404页面了。
乖乖隆地洞,怎么突然就变成这样了呢,想了想项目的架构,域名请求是先由nginx进行动态负载均衡转发给Tomcat进行处理的,那么我直接根据IP+端口请求呢,定位一下问题根源
查询了一下项目日志,日志中显示已经进入了init.do方法,也能正常的请求接口,只是在进行页面转发时出现了404状态
那是不是因为没有找到这个init.jsp页面呢?
看了下项目结构,项目结构依然没有问题啊,文件也存在。
。
。
。
最后打开了Tomcat的catalina.out日志,发现有如下错误存在
WARNING: Failed to delete generated class file [/app/tomcat_v7/work/Catalina/localhost/trade/org/apache/jsp/WEB_002dINF/jsp/pay/init_jsp.class] WARNING: Failed to delete generated Java file [/app/tomcat_v7/work/Catalina/localhost/trade/org/apache/jsp/WEB_002dINF/jsp/pay/init_jsp.java] WARNING: Failed to delete generated Java file [/app/tomcat_v7/work/Catalina/localhost/trade/org/apache/jsp/WEB_002dINF/jsp/pay/init_jsp.java]
无法删除生成的类文件
无法删除?! 是不是没有权限,看了下Catalina/localhost目录和文件,原来是root所有者,仔细想了想,之前这个项目在部署时候使用的是root用户权限,后来在做项目补丁时,用的是was权限,虽然在当时项目修改了was所属权限,但是后来的日志和缓存并没有给root权限,原来是这个问题。
解决方案是,root用户进入Catalina/localhost。将其目录内容缓存删除,然后再使用was普通用户进行重启项目,问题解决!
未经允许请勿转载:程序喵 » 关于Linux权限引起的Tomcat项目404问题