Java 网络打印机对Windows Server 2008 JBoss EAP 6.3.0上的lookupPrintServices不可见

Java 网络打印机对Windows Server 2008 JBoss EAP 6.3.0上的lookupPrintServices不可见,java,printing,jboss,windows-server-2008-r2,Java,Printing,Jboss,Windows Server 2008 R2,我已将JBoss EAP 6.3.0作为Windows 2008服务运行在Admin组的Active Directory用户帐户下。网络打印机(型号KONICA MINOLTA 423SeriesPS)通过使用其帐户中的RDPing连接到此用户,然后通过其\\server\printerName路径连接到打印机。此打印机也被设置为该用户的默认打印机。然后我打开JBoss服务和我的应用程序EAR加载。它包含一个WAR文件,该文件使用PrintServiceLookup.lookupPrintSer

我已将JBoss EAP 6.3.0作为Windows 2008服务运行在Admin组的Active Directory用户帐户下。网络打印机(型号KONICA MINOLTA 423SeriesPS)通过使用其帐户中的RDPing连接到此用户,然后通过其
\\server\printerName
路径连接到打印机。此打印机也被设置为该用户的默认打印机。然后我打开JBoss服务和我的应用程序EAR加载。它包含一个WAR文件,该文件使用PrintServiceLookup.lookupPrintServices(null,null)查找打印机。返回的唯一打印机是“Microsoft XPS Document Writer”。怎么了

更新 我在Windows事件查看器中发现此错误。似乎不太可能有关联,因为在创建该用户和打印机之前就有很多这样的内容,但值得一提的是:

The print spooler failed to load a plug-in module TPVMMon.dll, error code 0x7e See the event user data for context information.

事实证明,至少在使用Java 1.7的Windows Server 2008中,这样配置的网络打印机不会可靠地出现在从
PrinterJob.lookupPrintServices
PrintServiceLookup.lookupPrintServices()
返回的打印机列表中。(奇怪的是,在某些情况下,网络打印机确实会为本地系统以外的帐户显示,但我还没有确定它们是什么。)为了让它们可靠地为任何Active Directory用户显示:

  • 转到“控制面板”的“设备和打印机”面板
  • 选择“添加”
  • 指定“本地打印机”
  • 指定“本地端口”
  • 对于端口,输入网络打印机的Windows路径
  • 完成向导

  • 以这种方式配置的网络打印机将始终显示。至少对我来说是这样。

    事实证明,这样配置的网络打印机不会可靠地出现在从
    PrinterJob.lookupPrintServices
    PrintServiceLookup.lookupPrintServices()
    返回的打印机列表中,至少在使用Java 1.7的Windows Server 2008中是如此。(奇怪的是,在某些情况下,网络打印机确实会为本地系统以外的帐户显示,但我还没有确定它们是什么。)为了让它们可靠地为任何Active Directory用户显示:

  • 转到“控制面板”的“设备和打印机”面板
  • 选择“添加”
  • 指定“本地打印机”
  • 指定“本地端口”
  • 对于端口,输入网络打印机的Windows路径
  • 完成向导
  • 以这种方式配置的网络打印机将始终显示。至少对我来说是这样