Tomcat 8 权限问题(Windows)

Tomcat 8 权限问题(Windows)

我目前正在尝试解决 Java Web 应用程序的一个问题,这个问题让我和软件供应商都感到困惑。我们在装有 Tomcat 8 的 Windows Server 2012 上运行。在我的场景中,应用程序使用安装程序来设置文件和环境。作为设置过程的一部分,将提供 Tomcat 将在其下运行的服务帐户。在此示例中,我将调用服务帐户srvTomcat

失败

上下文:Tomcat 作为 Windows 服务运行

用户:srvTomcat

在此上下文中运行 Tomcat 后,我​​们可以登录并与 UI 交互。但是,当应用程序尝试在磁盘上创建新目录时失败。(E:\xxx\xxx)在故障排除期间,我们已授予服务帐户对目录和文件共享的完全控制权,但问题仍然存在。日志仅告诉我们无法创建目录。

成功

上下文:从管理员命令提示符运行的 Tomcat

用户:srvTomcat

当在与上述故障相同的帐户下运行管理员命令提示符启动 Tomcat 时,一切正常。该应用程序可以在磁盘上创建目录。

据我所知,作为 Windows 服务运行(失败)和从管理员命令提示符运行(有效)时使用的配置选项没有区别。Windows Server 2012 是否有任何新的安全选项可能导致此问题?

答案1

我的一位同事确实找到了我们遇到的问题的解决方案。简而言之,这归结为在 vSphere 5 上运行 Windows Server 2012。在我们的案例中,应用程序尝试写入的驱动器 (D:) 被视为热插拔设备,这似乎是在 vSphere 5.0 上运行 Windows Server 2012 时的默认设置,而我们的构建过程并未考虑到这一点。通过控制台运行时,Tomcat/Java 安全设置允许写入此类驱动器。但是,当作为服务运行时,访问被拒绝并且写入失败。

要修复此问题,我们必须确保 Windows 不会将驱动器视为热插拔,这可以通过以下步骤完成:

  1. 使用 vSphere Client 连接到 ESXi/ESX 主机或 vCenter Server。
  2. 关闭虚拟机。
  3. 右键单击虚拟机,然后单击编辑设置。
  4. 单击“选项”选项卡。
  5. 单击常规 > 配置参数 > 添加行。
  6. 插入一个名为 devices.hotplug 且值为 false 的新行。
  7. 启动虚拟机。

上述步骤可在以下网址找到:http://www.jonathanmedd.net/2013/06/windows-server-2012-on-vsphere-5-0-the-case-of-the-missing-d-drive.html

相关内容