`

解决Tomcat下无法获取打印机问题

阅读更多

问题情况:

 

最近部署J2EE项目时遇到一个非常头疼的问题:

 

  • 在Eclipse下使用main方法,可以获取打印机
  • Eclipse下通过Tomcat启动项目,可以获取打印机
  • 使用免安装版的Tomcat通过startup.bat启动项目,可以获取打印机
  • 使用安装版的Tomcat通过tomcat6.exe启动项目,可以获取打印机
  • 使用安装版的Tomcat通过tomcat6w.exe或Tomcat6服务启动项目,无法获取打印机,更准确的说,是可以获取本地打印机,无法获取网络上共享的打印机

问题原因:

 

首先,经过多次的尝试,发现了以上的规律,然后去研究tomcat6w.exe和tomcat6.exe以及Tomcat6服务的关系。最终发现,tomcat6w.exe和tomcat6.exe并不仅仅是两种启动方式,tomcat6w.exe不是启动Tomcat的,而是用来配置Tomcat6的服务,实质启动的是Tomcat6服务。继续研究发现,Tomcat6服务默认使用的是本地账号(Local System Account),这个账号的权限是无法访问网络上的硬件设备(Network Services)的。得出这个结论,一切都OK了,只需要给Tomcat6服务更换一个具有能够访问网络服务权限的账号就行了,实践证明,这是正确的。

 

解决步骤:

 

  1. 找到Windows系统中Tomcat6服务(搞Java的都懂,不累赘);
  2. 右键--“属性”--“登录”,修改登录身份,不使用默认的“本地系统账号”,通过“此账号”选择一个具有访问网络服务权限的账号,此处我选择了“Administrator”,应用、确定后,重启Tomcat6服务或者使用tomcat6w.exe启动,发现能正常获取打印机。

 

注:

  1. 本文解决方法适用于Windows系统,Linux系统没有研究,但可能也是账号权限的原因,希望遇到的兄弟能够从本文获取灵感,顺利解决
  2. 本文提及的Tomcat是Tomcat6,实验过Tomcat7也是完全一样的,看网上提到Tomcat5.5貌似也有这种情况,但没有实验,兄弟自己试试吧,有问题咱们交流
0
2
分享到:
评论
2 楼 曹佳伟 2014-07-20  
我是把tomcat7注册成服务后,不能获取主板序列号等本地硬件信息了,这是为什么呢
1 楼 di1984HIT 2013-07-01  
支持你一下,这是第一次听过,呵呵。

相关推荐

Global site tag (gtag.js) - Google Analytics