我的问题是,在JBoss AS 7中运行时,以下代码段找不到任何打印机(如果它在EJB中,注入POJO或SesscionScoped命名类,则无关紧要):
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
System.out.println("Number of services: " + services.length);
当它在独立的Java应用程序中运行时,它会按预期返回6个服务。
此外,我没有将Jboss作为服务运行,但是使用standalone.bat(以管理员身份运行它也没有帮助),这是类似帖子中最常见的问题。我还没试过PrintServiceLookup.lookupDefaultPrintService()
和PrinterJob.lookupPrintServices()
。
我几乎没有想法,也许这是JBoss 7中的一个错误?或者应该以某种特殊方式调用PrintServiceLookup?
非常感谢任何帮助!
答案 0 :(得分:0)
我只是在这里猜测,但可能是JBoss使用的SecurityManager
阻止了这一点。班级PrintServiceLookup
的文件说
建议使用PrintServiceLookup实现程序检查SecurityManager.checkPrintJobAccess()以拒绝访问不受信任的代码。遵循此建议策略意味着不受信任的代码可能无法找到任何打印服务。
答案 1 :(得分:0)
我也有同样的问题。但添加策略文件并没有帮助。如果您单步执行查找服务代码,则不会在checkPrintJobAccess上抛出异常。
我认为这是awt / windows类加载的东西。