Quartz-Job und InputStreams

TiME-SPLiNTER

Aktives Mitglied
Hallo zusammen,

Ich habe ein Problem mit einem Quartz-Job. Die Klasse implementiert "Job" und in der Methode "execute" rufe ich einen Konstruktor einer Klasse auf, der ein Properties-File lesen soll. Dabei wirft aber die Job-Klasse immer eine Exception:

Code:
[ERROR] 08:55:28,443 @ ErrorLogger - Job (jobDetailGroup-s1.jobDetail-s1 threw an exception. 
org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)]
	at org.quartz.core.JobRunShell.run(JobRunShell.java:227)
	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
Caused by: java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
	at java.security.AccessController.checkPermission(AccessController.java:546)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
	at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285)
	at java.lang.System.getProperty(System.java:652)
	at java.io.Win32FileSystem.getUserPath(Win32FileSystem.java:296)
	at java.io.Win32FileSystem.resolve(Win32FileSystem.java:312)
	at java.io.File.getAbsolutePath(File.java:501)
	at java.io.File.getAbsoluteFile(File.java:517)
	at com.timesplinter.ch.gisprocessenginecommon.common.Utils.readAsProperties(Utils.java:17)
	at com.timesplinter.ch.gisprocessenginecommon.common.JobSettings.<init>(JobSettings.java:38)
	at com.timesplinter.ch.gisprocessengine.common.GisProcessEngineJob.execute(GisProcessEngineJob.java:37)
	at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
	... 1 more

Rufe ich die Klasse selbst auf (also nicht durch Quartz), bekomme ich keine Exception und alles klappt. Kann mir jemand sagen, weshalb? Wäre euch über Hilfe sehr dankbar :D.
 

FArt

Top Contributor
Steht eigentlich alles in der Fehlermeldung: wrid ein Systemproperty lesend abgefragt, wird erst vom AccessController überprüft, ob das in diesem Kontext erlaubt ist, was wohl hier nicht der Fall ist.

access denied (java.util.PropertyPermission user.dir read)

Läuft Quartz standalone? Oder in einem AS, der u.U. etwas restiktiver ist?
 

TiME-SPLiNTER

Aktives Mitglied
Danke für deine Antwort :). Ja soweit ist mir das schon klar. Das mit dem Acces Denied hab ich auch gesehen... die Frage ist nur: Weshalb?

Also Quartz benutze ich in meinem Aktuellen Java-Projekt. Folglich wäre es nicht standalone, wenn du das meinst :)...
 

TiME-SPLiNTER

Aktives Mitglied
Okay soweit habe ich das begriffen. Das Kapitel "Recognizing a Security Violation" behandelt genau das Thema mit dem Lesen eines Files.

Aber wieso lässt Quartz das nicht zu und wie kann ich den SecurityManager umbiegen, damit ich das File lesen darf?

EDIT Ich habe nun herausgefunden, dass es wohl nicht an Quartz selbst liegt, sondern am JDK und dessen Security Einstellungen. Weil wenn ich eine RMI-Methode eines RMI-Servers aufrufe, die ein File lesen soll habe ich exakt die gleiche Exception. Jetzt ist nur die Frage was ist da falsch konfiguriert?
 
Zuletzt bearbeitet:

FArt

Top Contributor
Ich habe nun herausgefunden, dass es wohl nicht an Quartz selbst liegt, sondern am JDK und dessen Security Einstellungen. Weil wenn ich eine RMI-Methode eines RMI-Servers aufrufe, die ein File lesen soll habe ich exakt die gleiche Exception. Jetzt ist nur die Frage was ist da falsch konfiguriert?

Tja, das kann dir wohl niemand so einfach beantworten, der nicht deine Laufzeitumgebung kennt. Per Default ist in einer VM kein SecurityManager installiert.
Es bleibt die Frage nach dem Kontext, in dem Call kommt... ein AS könnte einen SM installieren... ein Applet läuft in einer Sandbox, die einem SM hat...
 

Ähnliche Java Themen

Neue Themen


Oben