Java Tomcat windows服务无法访问网络驱动器

Java Tomcat windows服务无法访问网络驱动器,java,tomcat,windows-services,network-security,Java,Tomcat,Windows Services,Network Security,我有两个windows域A和B 我有两个服务器:nasB在域B上,和webserverA在域A上 我有两个用户:userB在域B上访问nasB和userA在域A上访问webserverA 我在webserverA上运行tomcat作为服务,它的logon as属性设置为userA 我使用userB凭据在webserverA上映射了\\nasB\myFiles$\。映射只允许JVM访问。我总是在代码中使用UNC访问驱动器。我在管理网络密码中也有凭据。当直接运行任何java应用程序而不是作为服务运行

我有两个windows域A和B

我有两个服务器:
nasB
在域B上,和
webserverA
在域A上

我有两个用户:
userB
在域B上访问
nasB
userA
在域A上访问
webserverA

我在
webserverA
上运行tomcat作为服务,它的logon as属性设置为
userA

我使用
userB
凭据在
webserverA
上映射了
\\nasB\myFiles$\
。映射只允许JVM访问。我总是在代码中使用UNC访问驱动器。我在管理网络密码中也有凭据。当直接运行任何java应用程序而不是作为服务运行时,这两种方法都有效:(


如果我将tomcat作为服务运行,它会抛出一个filenotfound,除非尝试访问
\\nasB\myFiles$\somefile.txt
。如果我使用startup.bat运行tomcat,它可以很好地访问该文件


我无法使用
userB
运行tomcat服务,因为他无权访问
webserverA
。如何让我的tomcat服务在访问
nasB
时使用
userB
凭据?

不要尝试使用映射驱动器

鉴于用户的配置和映射驱动器只有在用户使用交互式登录时才可用,您将无法使用此类资源。请尝试使用UNC路径,如果由于用户限制而无法使用,请获得jcifs库,在这些情况下,它非常方便,因为它允许您在访问时进行身份验证他使用UNC路径访问资源,因此它减少了关于读取网络驱动器中的文件夹和文件的能力的不确定性(另外,将tomcat服务配置为作为管理用户运行,提供不应过期的凭据,…)


我自己也遇到过这个问题,这只是我个人的看法。

在两台Windows服务器上创建用户名/密码相同的Windows用户。 示例userA/passA
然后与该用户一起运行Tomcat Windows服务。

“如果我使用startup.bat运行Tomcat,它可以很好地访问该文件”-当您这样做时,您是以哪个用户的身份登录的?
userA
。但正如我注意到的,他使用
userB
凭据映射了
nasB
。此外,我在所有位置使用UNC,而不是映射驱动器号。我在所有位置都使用UNC。JCIFS是否允许我从fileinputstream使用UNC访问驱动器?我抛出文件locati在上,您可以访问使用fileinputstream打开文件的第三方库。JCIFS处理身份验证,如果成功,将创建一个适当的实例。当然,它应该允许您读取其中的文件,因为身份验证已经正确。