0

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

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

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

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

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

4

3 回答 3

2

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

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

于 2010-09-23T13:55:15.827 回答
0

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

于 2010-09-23T13:57:23.407 回答
0

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

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

相关

当文件确实存在时抛出 FileNotFoundException。

于 2010-09-23T15:12:41.430 回答