第一种①我们一般都知道在TOMCAT下面部署应用一般都会部署到*\webapps目录下面,那么假如我们不把项目部署到*\webapps下面还要访问该怎么办呢?(大众方式)
第二种②你只需要在tomcat的conf\Catalina\localhost目录下面加一个配置文件,假如你的项目名称为mydemo那么配置文件的名称就为mydemo.xml而里面的内容是
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="F:/myworkspace/mydemo/WebRoot" path="/mydemo" reloadable="true">
</Context>
增加上它,这样的话,就算的你webapps下面没有mydemo这个项目,你也可以访问了。
因为当TOMCAT启动时,它就会去F:/myworkspace/mydemo/WebRoot这里面找。
第三种③还有一个配置方式是在E:\apache-tomcat-6.0.36\conf\server.xml里面加上这么一句话
<Context path="/mydemo" docBase="F:/myworkspace/mydemo" reloadable="true"/>
结果也是去F:/myworkspace/mydemo/这里面找,而不用在webapp下面部署了。
第二种和第三种的效果相同
我感觉还是在webapp里面配置较好,因为这是大众默认的方式,移植的时候也好移植,不然可能有意向不到的事情发生
以上的东西给我带来一个非常大的麻烦:
我把我的项目部署到另一台机器上时,用传统方式部署(把项目部署到了webapps下面),出现了一个问题折磨了我好久。(而我的本地是用的第二种方式部署的)
因为我的程序中有一段代码String path=ADConnectionUtil.class.getResource("/").getPath();当我在一个机器上debug这段代码时:path=F:/myworkspace/mydemo/WebRoot,而在另一个机器上debug这段代码时path=C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\mydemo/WebRoot.
原因很明显了,部署的方式不同导致项目的实际路径不同了,当然找到的也是不同的路径。这就可能发生一种情况:在你本地是好好的运行,怎么换了一个机器就不行了呢?
原因很简单:你部署的方式不同,读配置文件时找的位置不同,可能就读不到东西了,可能就不能运行了