Ich habe eine Anwendung Bohne scopedAufruf einer Methode in Anwendung-scoped Bohne aus Quarz Job
@ManagedBean(name = "myController")
@ApplicationScoped
public class MyController implements Serializable{
...
public void allOn(){...}
Und ich will
die Allon() -Methode aus einem Quarz-Job nennenimport org.quartz.Job;
public class CronJobAllOn implements Job{
@Override
public void execute(..){
//call allOn();}
}
I versucht, die Faces auf die Job-Klasse über die JobDataMap
JobDataMap jobDataMap = new JobDataMap();
jobDataMap.put("facesContext", FacesContext.getCurrentInstance());
JobDetail job = newJob(CronJobAllOn.class)
.usingJobData(jobDataMap)
.withIdentity("job1", "group1")
.build();
Aber es wirft nur eine Illegal passieren w enn ich versuche, es in der CronJobAllOn Klasse
public void execute(JobExecutionContext context) throws JobExecutionException {
FacesContext fc= (FacesContext) context.getMergedJobDataMap().get("facesContext");
MyController test = (MyController)fc.getExternalContext().getApplicationMap().get("MyController");
test.allOn();}
Wie kann ich aus einem Quarz-Job die Allon() -Methode in MyController rufen zu nennen?
Die ISE wird hier erklärt: http://stackoverflow.com/q/4605118 Was die konkrete Anforderung betrifft, führen Sie eine echte J ein EE-Server oder ein Barebones-Servletcontainer? Haben Sie CDI verfügbar? (Ich weiß, dass Sie [java-ee] getaggt haben, aber die Verwendung von Quartz anstelle der standardmäßigen EJB-API legt nahe, dass Sie tatsächlich einen Servletcontainer wie Tomcat anstelle eines echten Java EE-Servers verwenden). – BalusC
Danke für Ihre Antwort, Ich weiß nicht, was Sie mit ISE meinen. Ich verwende keinen Java EE-Server, daher habe ich das von Ihnen erwähnte Tag geändert. Habe ich mehr Optionen, wenn ich zum Java-EE Server wechsel? Die einzige Lösung für mein Problem, die mir in den Sinn kommt, besteht darin, Daten aus dem Quarz-Job in eine Datenbank zu schreiben und sie in der Anwendungs-Bean zu lesen. –
Ich habe jetzt die Bedeutung von ISE. ISE steht für IllegalStateException. Viel zu lernen für mich. Und ich habe Ihre hilfreiche Nachricht nach dem Link gelesen, dass ich FacesContext niemals als Instanzvariable einer View/Session/Application Scoped Managed Bean zuweisen und in verschiedenen Requests wiederverwenden sollte. –