程序人员在tomcat5.0上开发的应用,发布到服务器tomcat5.5上显示404错误,折磨了我两天,终于发现问题出在一个小小的地方。
问题如下:
应用通过虚拟主机方式发布,struts2构架;
在strust.xml设定的一个packge name是“school”,再其下定义一个action name是“listschool”,对应的result路径是/school/listschool.jsp;
但是,URL上的/school/listschool.action点击显示404错误,开始以为是识别为物理路径,没有优先处理action,该物理文件夹school名字后可以正常访问,但是在开发环境中的确不存在这种物理文件夹和packge同名导致的这个问题。
最后解决问题,是由于虚拟主机的appbase设置。
在以前的tomcat5.0项目中,我们一般的的虚拟主机设置为:
<Host name="www.xxx.cn" appbase="/data/webapp/hbzz" autoDeploy="true">
<Context path="" docBase="/data/webapp/hbzz" />
</Host>
改成appbase为空,或者去掉appbase均可:
<Host name="www.xxx.cn" appBase="" autoDeploy="true">
<Context path="" docBase="/data/webapp/xxx" />
</Host>
还有一种设定也可以:
<Host name="www.xxx.cn" appBase="/data/webapp" autoDeploy="true">
<Context path="" docBase="xxx" />
</Host>
就没有发生上面的问题,很奇怪tomcat5.5有这样的问题,难道struts的默认根目录是appBase+docBase?