2009-06-23 4 views
3

Wenn ich meine JBoss-Anwendung über die Windows-Eingabeaufforderung ausführen, kann ich die Liste der Drucker (einschließlich Netzwerkdrucker einwandfrei) abrufen.Java-Druckdienst: PrintServiceLookup.lookupPrintServices gibt Netzwerkdrucker nicht zurück

Wenn ich meine JBoss-Anwendung als Windows-Dienst ausführen, erhalte ich nur die Liste der Drucker, die direkt mit dem Rechner verbunden sind. Die Netzwerkdrucker werden nicht angezeigt.

Hier ist der Java-Code verwende ich die Liste der Drucker zu erhalten:

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

Es scheint kein Berechtigungsproblem zu sein, da unser Administrator nach, die Berechtigungen sind Setup gut.

Haben einige eine bessere Erklärung oder gibt es eine Reihe von Berechtigungen, die möglicherweise erforderlich sind, damit die Netzwerkdrucker angezeigt werden?

Antwort

5

Sie müssen den Windows-Dienst als Benutzer in der Domäne ausführen, die über die entsprechenden Berechtigungen verfügt, nicht als LocalUser.

Sie können Netzwerkdrucker auch über eine TCP/IP-Verbindung hinzufügen, und das Problem verschwindet.

0

Mein Kollege hatte genau dieses Problem vor wenigen Minuten, aber auf einem REDHAT LINUX System. Sein Server wurde neu gestartet und die Druckerfunktion funktionierte nur auf halbem Weg; LP funktionierte, Tassen funktionierten, aber keinen Zugriff auf Drucker von Java. Er fand heraus, dass localhost aus der hosts-Datei verschwunden war.

Seine Lösung: in localhost Host-Datei (aber da Sie auf Fenstern sind, könnte dies Ihre Lösung nicht sein)

0

es scheint ein Problem mit dem Netzwerkdrucker zu sein. Jeder von JRE zu erkennende Drucker muss sich im Status "shared" befinden. Netzwerkdrucker sind es leider nicht.

siehe: Systemeinstellungen-> Drucker-> PDF -> -> Freigegeben (Kontrollkästchen aktivieren)