访问网络驱动器时,Servlet会抛出找不到文件的文件

时间:2010-09-23 13:40:41

标签: java tomcat servlets windows-xp network-drive

我有一个生产环境和测试环境。生产有win2k3 + tomcat 6.0+和网络驱动器映射到驱动器号以便于访问(z:\ app而不是\ symba \ files \ app)。我的测试环境有windows xp(所有软件都是相同的,包括servlet的源代码),test也有相同的驱动器号映射到网络驱动器。

Tomcat在两个系统中都使用相同的用户ID运行,并且能够通过测试m / c和生产m / c中的Windows资源管理器访问该文件。

现在,如果尝试访问现有文件(可通过Windows资源管理器访问),则windows xp m / c(test m / c)中的servlet会抛出一个找不到文件的异常。生产中的servlet与测试环境中的servlet相同,生产servlet在我请求时愉快地提供文件,并且不会抛出任何错误。

我看到一些使用驱动器号的帖子不是一个好主意,应该使用UNC路径而我还没有尝试过。我想知道测试servlet无法获取文件的原因,而生产servlet工作正常。

非常感谢你的时间和帮助 博

3 个答案:

答案 0 :(得分:2)

您是否将应用程序服务器作为服务运行?仅当您使用交互式程序而非服务时,驱动器号分配才是可靠的。

几年前,我尝试解决一个完全相同的问题,但最后,我放弃了,并使用JCIFS来访问文件。

答案 1 :(得分:0)

如果您使用安全管理器运行Tomcat,则Web应用程序代码将根据默认配置仅允许文件访问其部署目录。如果要更改应用程序策略,可以在conf / catalina.policy中执行此操作,或者如果希望Web应用程序代码获得所有权限,则可以禁用安全管理器。

答案 2 :(得分:0)

您可能需要考虑将Tomcat服务作为有权访问映射驱动器的用户运行。

正如andcoz所指出的,映射不适用于我认为用于运行Tomcat的Windows中的SYSTEM用户。您可以将服务配置更改为以拥有驱动器映射的用户身份运行,并验证是否继续发生故障。

相关

FileNotFoundException thrown when the file does exists.