tomcat 虚拟目录,文件不再工程目录 访问方法

多台tomcat主机(win2003平台)做负载均衡时,希望共享虚拟目录,没有采用同步各主机虚拟目录的方式,所以只能在文件服务器上开辟共享目录,将tomcat的context docpath指向它。tomcat主机上将共享目录映射为本地磁盘,配置如下

如果是script方式(通过startup.bat),可正常启动,以服务方式启动tomcat时,总是报“Document base does not exist or is not a readable directory”,修改tomcat启动服务账户为administrator,问题依旧,怀疑服务模式下无法访问网络驱动器,将docbase指向共享目录的UNC path即远程访问方式

新的错误出现了,报“java.io.IOException: 登录失败: 未知的用户名或错误密码”,说明tomcat是可以通过unc path来配置context的docbase,不过当前的这个账户访问受限,奇怪的是,在当前桌面环境中是可以顺利访问\\192.168.1.2\shareDir这一路径的。联想到这组服务器都是在windows域控制环境下,以域用户登录系统并将服务启动账户改为域用户domain\administrator,问题解决。
总结:
(1) tomcat可以通过unc path来配置context的docbase
(2)因为映射的网络驱动器,是在用户的profile中配置, 服务模式下tomcat不能访问到网络驱动器(猜想,可能可以通过修改profile来访问网络驱动器)
(3)若远程共享目录只有域用户才能访问,在启动tomcat服务时,必须指定以域用户启动服务
参考:
http://wiki.apache.org/tomcat/FAQ/Windows

http://blog.mattwoodward.com/accessing-a-network-drive-from-apache-and-tom?c=1



在tomcat安装好后,只要把你的web项目copy到%TOMCAT_HOME%webapp下面就可以是使用啦!!其实还有种方法就是设定虚拟目录,即把项目的目录映射到tomcat中。这样做即可以不用重复的部署,节约时间,而且给开发人员带来方便。
方法如下:
1,找到%TOMCAT_HOME%/conf/server.xml,(即tomcat的安装目录下面相关的文件)打开此xml文件,在 之间加入如下代码:






    docBase是实际路径,这里一般写一个绝对的磁盘路径,当然也可以写 相对路径,相对路径是相对于tomcat安装目录的webapps目录的,通常设置虚拟目录的目的是将tomcat的安装和项目的保存分开,所以这里建议你使用磁盘绝对路径,并且这个磁盘路径不时在tomcat安装目录下。workDir是tomcat运行是对JSP文件做编译后的文件,这个文件最好也是分开。
path为虚拟路径,访问时的路径,注意:一定要加“/”。值得注意的是:path可以为 "/"那么访问“IP:端口”就可以访问到布置的工程,如果为"/test",那么必须得访问“IP:端口/test”才能访问到,我建议采用第一种方法。不然访问每个工程都得有个虚拟路径,看上去不舒服。可能你会想到如果我有多个工程怎么办?是不是一定得取几个虚拟路径,如果你用一个IP的话那是肯定的。但是如果你把机器多设置几个IP,那么就行了,每个工程占用一个IP,这样层次结构更加清晰。
debug建议设置为0,reloadable设置为true。


2,如果在测试中出现404的错误,如果前面配置没有错,可能就是在%TOMCAT_HOME%/conf/web.xml文件中把虚拟路径显示目录给禁止啦,此时可以在web.xml文件中找到

default
org.apache.catalina.servlets.DefaultServlet

debug
0


listings
false

1

将listings的value改为true,然后重新启动tomcat,在输入url,测试成功!


3,如果项目开发完成,准备部署在服务器上时,记住要把第三步中web.xml文件中参数listings的值改为false,这样可以避免把项目的部署路径呈现给使用者!
具体如下:

listings
false


4、访问多台机器文件问题:

文件太多的时候必然需要跨目录或跨盘,这个时候就需要用到虚拟目录,但是Tomcat 不能直接跨Context 进行Forward。
例如:
用 Context 配置映射了虚拟目录 data1, 目录下有文件 123.txt
如果要在 / 下直接 forward 到 "/data1/123.txt" 是不行的,会提示 404 找不到文件。

那么就需要灵活应用Tomcat 虚拟目录映射:
在 D:/Tomcat/conf/Catalina/test 目录下(test为Server.xml配置文件中的域名) 增加 一个 xml 文件,(test要创建),创建之后加上这个样一个XML文件(这里就取名为data1.xml):

并且修改 Server.xml 中的 Context 允许 crossContext="true"。
那么就可以在工程中访问另外台机器上的文件(当然这个台机器需要共享访问的文件)。例如:
,来显示图片。

问题又来了,就是权限问题,共享的文件不想给任何人访问的话,就需要设置共享权限,那么就需要配置tomcat的权限:
1、在共享的机器上设置tomcat帐户和密码,并加入共享权限。
2、然后在放tomcat的服务器上,设置相同的tomcat帐户和密码。
3、在tomcat服务上配置登录账号和密码。

你可能感兴趣的:(tomcat 虚拟目录,文件不再工程目录 访问方法)