0,0 → 1,96 |
/* |
* Copyright 2011 Brian Rosenberger (Brutex Network) |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
|
package net.brutex.xservices.util; |
|
import java.io.Serializable; |
import java.util.Date; |
|
import org.mozilla.javascript.Context; |
import org.mozilla.javascript.Scriptable; |
import org.quartz.Job; |
import org.quartz.JobDataMap; |
import org.quartz.JobExecutionContext; |
import org.quartz.JobExecutionException; |
|
/** |
* Wrapper for jobs that can be executed through quartz scheduler. |
* |
* @author Brian Rosenberger, bru@brutex.de |
* @since 0.5.0 |
* |
*/ |
public class JobWrapper implements Job, Serializable { |
|
public void execute(JobExecutionContext jcontext) |
|
throws JobExecutionException { |
try { |
|
System.out.println("Executing scheduled job '"+jcontext.getJobDetail().getKey().getName()+"' at " + new Date()); |
|
JobDataMap jdMap = jcontext.getJobDetail().getJobDataMap(); |
String script = jdMap.getString("script"); |
|
// Create and enter a Context. A Context stores information about |
// the execution environment of a script. |
Context cx = Context.enter(); |
cx.setOptimizationLevel(0); |
cx.setLanguageVersion(Context.VERSION_1_7); |
// cx is the Context instance you're using to run scripts |
/* |
* cx.setClassShutter(new ClassShutter() { public boolean |
* visibleToScripts(String className) { |
* if(className.startsWith("adapter")) return true; |
* if(className.startsWith("java.lang.System") || |
* className.startsWith |
* ("org.apache.tomcat.util.log.SystemLogHandler")) return true; |
* System.out.println(className + " is blocked."); return false; } |
* }); |
*/ |
|
// Initialise the standard objects (Object, Function, etc.). This |
// must be done before scripts can be |
// executed. The null parameter tells initStandardObjects |
// to create and return a scope object that we use |
// in later calls. |
Scriptable scope = cx.initStandardObjects(); |
//Object wrappedOut = Context.javaToJS(System.out, scope); |
//Object wrappedOut2 = Context.javaToJS(this, scope); |
//scope.put("out", scope, wrappedOut); |
//scope.put("exe", scope, wrappedOut2); |
|
// Execute the script |
// cx.evaluateString(scope, "importClass('java.lang.System');\n", |
// "head", 1, null); |
// cx.evaluateString(scope, "importPackage('java.util');\n", "head", |
// 2, null); |
Object obj = cx |
.evaluateString(scope, script, "TestScript", 1, null); |
|
|
} catch (Exception e) { |
System.out.println(e.getMessage()); |
} finally { |
// Exit the Context. This removes the association between the |
// Context and the current thread and is an |
// essential cleanup action. There should be a call to exit for |
// every call to enter. |
Context.exit(); |
} |
|
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |