2012-01-03 4 views
2

Mon problème est que le morceau de code suivant ne trouve aucune imprimante lorsqu'il est exécuté dans JBoss AS 7 (peu importe si c'est dans un EJB, un POJO injecté ou un SesscionScoped Nommé class):JBoss AS 7.0.2 - aucun service d'impression trouvé

PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null); 

System.out.println("Number of services: " + services.length); 

Lorsque cette opération est exécutée dans une application Java autonome, elle renvoie les 6 services comme prévu. De plus, je n'utilise pas Jboss en tant que service, mais l'utilisation de standalone.bat (l'exécution en tant qu'administrateur n'a pas aidé non plus), c'était le problème le plus commun dans les messages similaires. J'ai également essayé PrintServiceLookup.lookupDefaultPrintService() et PrinterJob.lookupPrintServices() sans chance.

Je suis à court d'idées, c'est peut-être un bug dans JBoss 7? Ou le PrintServiceLookup devrait-il être appelé d'une manière spéciale?

Toute aide est très appréciée!

+0

Le problème est spécifique à jboss 7 et la solution est décrite dans http://stackoverflow.com/questions/16666786/printservicelookup-lookupprintservice-solution-in-jboss-as-7. – Christian13467

Répondre

0

Je devine juste ici, mais il se pourrait qu'un SecurityManager qui est utilisé par JBoss empêche ceci. Les docs de classe disent PrintServiceLookup

Un PrintServiceLookup implementor est recommandé de vérifier la SecurityManager.checkPrintJobAccess() de refuser l'accès au code non sécurisé. Le respect de cette stratégie recommandée signifie que le code non approuvé peut ne pas être en mesure de localiser les services d'impression.

JBoss AS7: Security : Running under a Java Security Manager

0

J'ai aussi le même problème. Mais l'ajout d'un fichier de politique n'a pas aidé. Si vous parcourez le code du service de recherche, il ne lance pas d'exception sur le checkPrintJobAccess.

Je pense que c'est quelque chose avec le chargement de la classe awt/windows.