Introduce JobServices and gerenal clean up
git-svn-id: https://brutex.net/svn/xservices/trunk@70 e7e49efb-446e-492e-b9ec-fcafc1997a86tag-20130205r
parent
ac59128e43
commit
84a6d44c62
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,12 @@
|
||||||
|
|
||||||
|
log4j.rootLogger=DEBUG, A1
|
||||||
|
log4j.appender.A1=org.apache.log4j.ConsoleAppender
|
||||||
|
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
|
||||||
|
|
||||||
|
# Print the date in ISO 8601 format
|
||||||
|
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c{2} - %m%n
|
||||||
|
|
||||||
|
# Print only messages of level WARN or above in the package com.foo.
|
||||||
|
log4j.logger.net.brutex.xservices=DEBUG
|
||||||
|
|
||||||
|
log4j.logger.org.springframework=INFO
|
|
@ -86,4 +86,6 @@ public class ReturnCode {
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getStdOut() { return this.stdOut; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,135 @@
|
||||||
|
/*
|
||||||
|
* 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.types;
|
||||||
|
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlType;
|
||||||
|
|
||||||
|
import net.brutex.xservices.util.BrutexNamespaces;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scheduled job type
|
||||||
|
*
|
||||||
|
* @author Brian Rosenberger
|
||||||
|
* @since 0.5.0
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@XmlType(namespace=BrutexNamespaces.WS_XSERVICES)
|
||||||
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
|
public class ScheduledJob {
|
||||||
|
|
||||||
|
@XmlElement(required=true,name="name")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@XmlElement(required=false, name="description")
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
@XmlElement(required=true, name="datetime")
|
||||||
|
private GregorianCalendar date;
|
||||||
|
|
||||||
|
@XmlElement(name="script")
|
||||||
|
private String script;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new scheduled job.
|
||||||
|
*
|
||||||
|
* @param name Job name.
|
||||||
|
* @param datetime Scheduled date and time.
|
||||||
|
* @param script The script to execute.
|
||||||
|
*/
|
||||||
|
public ScheduledJob(String name, GregorianCalendar datetime, String script) {
|
||||||
|
this.name = name;
|
||||||
|
this.date = datetime;
|
||||||
|
this.script = script;
|
||||||
|
this.description = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new scheduled job.
|
||||||
|
*
|
||||||
|
* @param name Job name.
|
||||||
|
* @param datetime Scheduled date and time.
|
||||||
|
* @param script The script to execute.
|
||||||
|
* @param description Job description.
|
||||||
|
*/
|
||||||
|
public ScheduledJob(String name, GregorianCalendar datetime, String script, String description) {
|
||||||
|
this.name = name;
|
||||||
|
this.date = datetime;
|
||||||
|
this.script = script;
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new scheduled job.
|
||||||
|
*/
|
||||||
|
public ScheduledJob() {
|
||||||
|
this.name = null;
|
||||||
|
this.date=null;
|
||||||
|
this.script=null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set name of the job.
|
||||||
|
* @param name
|
||||||
|
*/
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get name of the job.
|
||||||
|
* @return job name
|
||||||
|
*/
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set scheduled date.
|
||||||
|
* @param date
|
||||||
|
*/
|
||||||
|
public void setDate(GregorianCalendar date) {
|
||||||
|
this.date = date;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get scheduled date.
|
||||||
|
* @return date
|
||||||
|
*/
|
||||||
|
public GregorianCalendar getDate() {
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setScript(String script) {
|
||||||
|
this.script = script;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getScript() {
|
||||||
|
return script;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String desc) {
|
||||||
|
this.description = desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,181 @@
|
||||||
|
/*
|
||||||
|
* 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.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DatabaseMetaData;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
import org.apache.log4j.Level;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
import org.quartz.utils.ConnectionProvider;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Brian Rosenberger
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class BrutexQuartzConnectionProvider implements ConnectionProvider {
|
||||||
|
|
||||||
|
private Connection conn = null;
|
||||||
|
private final Logger logger = Logger.getLogger(this.getClass().getCanonicalName());
|
||||||
|
|
||||||
|
|
||||||
|
public Connection getConnection() throws SQLException {
|
||||||
|
if( conn!= null && conn.isValid(5)) {
|
||||||
|
logger.debug("Checking tables on pre-exisiting database connection.");
|
||||||
|
checkTables();
|
||||||
|
return conn;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
// Class.forName("org.hsqldb.jdbc.JDBCDriver" );
|
||||||
|
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.fatal("Failed to load Derby JDBC driver.");
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isConnected(false)) {
|
||||||
|
checkTables();
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return conn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void shutdown() throws SQLException {
|
||||||
|
try {
|
||||||
|
// Class.forName("org.hsqldb.jdbc.JDBCDriver" );
|
||||||
|
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.err.println("ERROR: failed to load Derby JDBC driver.");
|
||||||
|
e.printStackTrace();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String t = this.getClass().getClassLoader().getResource("/").toString()
|
||||||
|
.substring(6);
|
||||||
|
t += "../data/db";
|
||||||
|
System.out.println("Shut down embedded database now.");
|
||||||
|
Connection c = DriverManager.getConnection("jdbc:derby:" + t
|
||||||
|
+ ";shutdown=true;");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private synchronized void recursiveDelete(File dbDir) {
|
||||||
|
File[] files = dbDir.listFiles();
|
||||||
|
for (int i = 0; i < files.length; i++) {
|
||||||
|
if (files[i].isFile()) {
|
||||||
|
files[i].delete();
|
||||||
|
} else {
|
||||||
|
recursiveDelete(files[i]);
|
||||||
|
files[i].delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dbDir.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
private synchronized void checkTables() throws SQLException {
|
||||||
|
logger.debug("Checking QUARTZ database schema.");
|
||||||
|
if(!isConnected(false)) {
|
||||||
|
logger.error("Failed to validate QUARTZ database schema.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> ddl_list = new ArrayList<String>(11);
|
||||||
|
ddl_list.add("QRTZ_JOB_DETAILS");
|
||||||
|
ddl_list.add("QRTZ_TRIGGERS");
|
||||||
|
ddl_list.add("QRTZ_SIMPLE_TRIGGERS");
|
||||||
|
ddl_list.add("QRTZ_CRON_TRIGGERS");
|
||||||
|
ddl_list.add("QRTZ_SIMPROP_TRIGGERS");
|
||||||
|
ddl_list.add("QRTZ_BLOB_TRIGGERS");
|
||||||
|
ddl_list.add("QRTZ_CALENDARS");
|
||||||
|
ddl_list.add("QRTZ_PAUSED_TRIGGER_GRPS");
|
||||||
|
ddl_list.add("QRTZ_FIRED_TRIGGERS");
|
||||||
|
ddl_list.add("QRTZ_SCHEDULER_STATE");
|
||||||
|
ddl_list.add("QRTZ_LOCKS");
|
||||||
|
|
||||||
|
String ddl = this.getClass().getClassLoader().getResource("/").toString()
|
||||||
|
.substring(6)+ "../data/";
|
||||||
|
|
||||||
|
DatabaseMetaData dmd = conn.getMetaData();
|
||||||
|
for (String tbl : ddl_list) {
|
||||||
|
ResultSet rs = dmd.getTables(null, "APP", tbl, null);
|
||||||
|
if (!rs.next()) {
|
||||||
|
logger.log(Level.INFO, "Adding DDL for table "+ tbl);
|
||||||
|
Statement st = conn.createStatement();
|
||||||
|
File ddlFile = new File(ddl + tbl + ".ddl");
|
||||||
|
String create = "";
|
||||||
|
try {
|
||||||
|
BufferedReader r = new BufferedReader(new FileReader(ddlFile));
|
||||||
|
while (r.ready()) {
|
||||||
|
create += r.readLine() + "\n";
|
||||||
|
}
|
||||||
|
create.trim();
|
||||||
|
if( st.execute(create)) {
|
||||||
|
logger.log(Level.INFO, "Table " + tbl + " created.");
|
||||||
|
}
|
||||||
|
} catch (FileNotFoundException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
} catch (IOException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.ERROR, "Error executing statement "+ create );
|
||||||
|
System.out.println(ex.getMessage());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.trace("Table "+tbl+" exists.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private synchronized boolean isConnected(boolean fail) throws SQLException {
|
||||||
|
if(conn!=null && conn.isValid(5)) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
String t = this.getClass().getClassLoader().getResource("/").toString().substring(6); // WEB-INF/classes
|
||||||
|
t += "../data/db";
|
||||||
|
logger.debug("Database directory is set to '" + t + "'");
|
||||||
|
try {
|
||||||
|
this.conn = DriverManager.getConnection("jdbc:derby:" + t + ";create=true;");
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.error(ex.getMessage(), ex);
|
||||||
|
if(!fail) {
|
||||||
|
logger.warn("Deleting database directory.");
|
||||||
|
recursiveDelete(new File(t));
|
||||||
|
logger.warn("Retrying to connect to database.");
|
||||||
|
return isConnected(true);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -144,12 +144,29 @@ public interface DateService {
|
||||||
@WebParam(name=PARAM_DATETIME) @XmlElement(required=true) GregorianCalendar cal,
|
@WebParam(name=PARAM_DATETIME) @XmlElement(required=true) GregorianCalendar cal,
|
||||||
@WebParam(name=PARAM_FORMAT) @XmlElement(required=true) String format) throws XServicesFault;
|
@WebParam(name=PARAM_FORMAT) @XmlElement(required=true) String format) throws XServicesFault;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a string into date using pre-defined date formats.
|
||||||
|
*
|
||||||
|
* @param s Date/ time as string
|
||||||
|
* @param format date format
|
||||||
|
* @param timezone timezone
|
||||||
|
* @return XML Date
|
||||||
|
* @throws XServicesFault
|
||||||
|
*/
|
||||||
@WebMethod(operationName=OPERATION_PARSEDATE)
|
@WebMethod(operationName=OPERATION_PARSEDATE)
|
||||||
public abstract GregorianCalendar parseDate(
|
public abstract GregorianCalendar parseDate(
|
||||||
@WebParam(name=PARAM_DATETIME) @XmlElement(required=true) String s,
|
@WebParam(name=PARAM_DATETIME) @XmlElement(required=true) String s,
|
||||||
@WebParam(name=PARAM_FORMAT) @XmlElement(required=true) DateFormatType format,
|
@WebParam(name=PARAM_FORMAT) @XmlElement(required=true) DateFormatType format,
|
||||||
@WebParam(name=PARAM_TIMEZONE) String timezone) throws XServicesFault;
|
@WebParam(name=PARAM_TIMEZONE) String timezone) throws XServicesFault;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a string into date using any format.
|
||||||
|
* @param s date/ time as string
|
||||||
|
* @param format date format
|
||||||
|
* @param timezone timezone
|
||||||
|
* @return XML Date
|
||||||
|
* @throws XServicesFault
|
||||||
|
*/
|
||||||
@WebMethod(operationName=OPERATION_PARSEDATEADVANCED)
|
@WebMethod(operationName=OPERATION_PARSEDATEADVANCED)
|
||||||
public abstract GregorianCalendar parseDateAdvanced(
|
public abstract GregorianCalendar parseDateAdvanced(
|
||||||
@WebParam(name=PARAM_DATETIME) @XmlElement(required=true) String s,
|
@WebParam(name=PARAM_DATETIME) @XmlElement(required=true) String s,
|
||||||
|
|
|
@ -19,6 +19,7 @@ package net.brutex.xservices.ws;
|
||||||
import javax.jws.WebMethod;
|
import javax.jws.WebMethod;
|
||||||
import javax.jws.WebParam;
|
import javax.jws.WebParam;
|
||||||
import javax.jws.WebService;
|
import javax.jws.WebService;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
|
||||||
import net.brutex.xservices.types.HostConnection;
|
import net.brutex.xservices.types.HostConnection;
|
||||||
import net.brutex.xservices.types.ReturnCode;
|
import net.brutex.xservices.types.ReturnCode;
|
||||||
|
@ -26,6 +27,7 @@ import net.brutex.xservices.util.BrutexNamespaces;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Task execution web service
|
* Task execution web service
|
||||||
|
*
|
||||||
* @author Brian Rosenberger
|
* @author Brian Rosenberger
|
||||||
* @since 0.1.0
|
* @since 0.1.0
|
||||||
*
|
*
|
||||||
|
@ -131,4 +133,13 @@ public interface ExecuteService {
|
||||||
@WebParam(name = "expect") String expect,
|
@WebParam(name = "expect") String expect,
|
||||||
@WebParam(name = "timeout") long timeout);
|
@WebParam(name = "timeout") long timeout);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param script
|
||||||
|
* @throws XServicesFault
|
||||||
|
*/
|
||||||
|
@WebMethod(operationName = "runJavaScript")
|
||||||
|
public abstract void runJScript(
|
||||||
|
@WebParam(name = "script") @XmlElement(required=true) String script) throws XServicesFault;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -26,8 +26,6 @@ import javax.xml.bind.annotation.XmlElement;
|
||||||
import org.apache.cxf.annotations.WSDLDocumentation;
|
import org.apache.cxf.annotations.WSDLDocumentation;
|
||||||
import org.apache.cxf.annotations.WSDLDocumentationCollection;
|
import org.apache.cxf.annotations.WSDLDocumentationCollection;
|
||||||
|
|
||||||
import com.sun.xml.internal.ws.api.model.wsdl.WSDLDescriptorKind;
|
|
||||||
|
|
||||||
import net.brutex.xservices.types.ArchiveResource;
|
import net.brutex.xservices.types.ArchiveResource;
|
||||||
import net.brutex.xservices.types.AttachmentType;
|
import net.brutex.xservices.types.AttachmentType;
|
||||||
import net.brutex.xservices.types.FileResource;
|
import net.brutex.xservices.types.FileResource;
|
||||||
|
@ -37,7 +35,10 @@ import net.brutex.xservices.types.ReturnCode;
|
||||||
import net.brutex.xservices.util.BrutexNamespaces;
|
import net.brutex.xservices.util.BrutexNamespaces;
|
||||||
import net.brutex.xservices.util.XServicesDocumentation;
|
import net.brutex.xservices.util.XServicesDocumentation;
|
||||||
/**
|
/**
|
||||||
|
* File related web service operations.
|
||||||
|
*
|
||||||
* @author Brian Rosenberger
|
* @author Brian Rosenberger
|
||||||
|
* @since 0.3.0
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES)
|
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES)
|
||||||
|
@ -48,20 +49,24 @@ import net.brutex.xservices.util.XServicesDocumentation;
|
||||||
)
|
)
|
||||||
public interface FileService {
|
public interface FileService {
|
||||||
|
|
||||||
public static final String OPERATION_BASENAME ="basename";
|
final String OPERATION_BASENAME ="basename";
|
||||||
public static final String OPERATION_DOWNLOADFILE ="downloadFile";
|
final String OPERATION_DOWNLOADFILE ="downloadFile";
|
||||||
public static final String OPERATION_UPLOADFILE ="uploadFile";
|
final String OPERATION_UPLOADFILE ="uploadFile";
|
||||||
public static final String OPERATION_COPY ="copy";
|
final String OPERATION_COPY ="copy";
|
||||||
public static final String OPERATION_COPYFILE ="copyFile";
|
final String OPERATION_COPYFILE ="copyFile";
|
||||||
public static final String OPERATION_LOADRESOURCE = "loadResource";
|
final String OPERATION_LOADRESOURCE = "loadResource";
|
||||||
public static final String OPERATION_LOADRESOURCEFROMARCHIVE = "loadResourceFromArchive";
|
final String OPERATION_LOADRESOURCEFROMARCHIVE = "loadResourceFromArchive";
|
||||||
public static final String OPERATION_ECHOTOFILE = "echoToFile";
|
final String OPERATION_ECHOTOFILE = "echoToFile";
|
||||||
public static final String OPERATION_CHANGEOWNER = "changeOwner";
|
final String OPERATION_CHANGEOWNER = "changeOwner";
|
||||||
public static final String OPERATION_CHANGEMODE = "changeMode";
|
final String OPERATION_CHANGEMODE = "changeMode";
|
||||||
public static final String OPERATION_CHANGEGROUP = "changeGroup";
|
final String OPERATION_CHANGEGROUP = "changeGroup";
|
||||||
public static final String OPERATION_REPLACEINFILE = "replaceInFile";
|
final String OPERATION_REPLACEINFILE = "replaceInFile";
|
||||||
public static final String OPERATION_REPLACEINFILE2 = "replaceInFile2";
|
final String OPERATION_REPLACEINFILE2 = "replaceInFile2";
|
||||||
public static final String OPERATION_REPLACEINFILEREGEX = "replaceInFileRegEx";
|
final String OPERATION_REPLACEINFILEREGEX = "replaceInFileRegEx";
|
||||||
|
|
||||||
|
final String PARAM_FILE = "file";
|
||||||
|
final String PARAM_ENCODING = "encoding";
|
||||||
|
final String PARAM_OVERRIDE = "override";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param filename
|
* @param filename
|
||||||
|
@ -71,7 +76,7 @@ public interface FileService {
|
||||||
@WSDLDocumentation(value = "The base name of the given file excluding the suffix.")
|
@WSDLDocumentation(value = "The base name of the given file excluding the suffix.")
|
||||||
@WebMethod(operationName = OPERATION_BASENAME)
|
@WebMethod(operationName = OPERATION_BASENAME)
|
||||||
public abstract String basename(
|
public abstract String basename(
|
||||||
@WebParam(name = "file") @XmlElement(required=true) String filename,
|
@WebParam(name = PARAM_FILE) @XmlElement(required=true) String filename,
|
||||||
@WebParam(name = "suffix") String suffix);
|
@WebParam(name = "suffix") String suffix);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -92,7 +97,7 @@ public interface FileService {
|
||||||
@WSDLDocumentation(XServicesDocumentation.SERVICE_OPERATION_UPLOADFILE)
|
@WSDLDocumentation(XServicesDocumentation.SERVICE_OPERATION_UPLOADFILE)
|
||||||
@WebMethod(operationName = OPERATION_UPLOADFILE)
|
@WebMethod(operationName = OPERATION_UPLOADFILE)
|
||||||
public abstract String uploadFile(
|
public abstract String uploadFile(
|
||||||
@WebParam(name = "file") AttachmentType file) throws XServicesFault;
|
@WebParam(name = PARAM_FILE) AttachmentType file) throws XServicesFault;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param src
|
* @param src
|
||||||
|
@ -109,8 +114,8 @@ public interface FileService {
|
||||||
@WebParam(name = FileSetResource.XML_NAME) @XmlElement(required=true) FileSetResource src,
|
@WebParam(name = FileSetResource.XML_NAME) @XmlElement(required=true) FileSetResource src,
|
||||||
@WebParam(name = "todir") @XmlElement(required=true) String todir,
|
@WebParam(name = "todir") @XmlElement(required=true) String todir,
|
||||||
@WebParam(name = "preservelastmodified") boolean plm,
|
@WebParam(name = "preservelastmodified") boolean plm,
|
||||||
@WebParam(name = "overwrite") boolean overwrite,
|
@WebParam(name = PARAM_OVERRIDE) boolean overwrite,
|
||||||
@WebParam(name = "encoding") String encoding) throws XServicesFault;
|
@WebParam(name = PARAM_ENCODING) String encoding) throws XServicesFault;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param fromFile
|
* @param fromFile
|
||||||
|
@ -124,7 +129,7 @@ public interface FileService {
|
||||||
public abstract ReturnCode copyFile(
|
public abstract ReturnCode copyFile(
|
||||||
@WebParam(name = "fromFile") @XmlElement(required=true) String fromFile,
|
@WebParam(name = "fromFile") @XmlElement(required=true) String fromFile,
|
||||||
@WebParam(name = "toFile") @XmlElement(required=true) String tofile,
|
@WebParam(name = "toFile") @XmlElement(required=true) String tofile,
|
||||||
@WebParam(name = "overwrite") boolean overwrite) throws XServicesFault;
|
@WebParam(name = PARAM_OVERRIDE) boolean overwrite) throws XServicesFault;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param res
|
* @param res
|
||||||
|
@ -136,7 +141,7 @@ public interface FileService {
|
||||||
@WebMethod(operationName = OPERATION_LOADRESOURCE)
|
@WebMethod(operationName = OPERATION_LOADRESOURCE)
|
||||||
public abstract String loadRes(
|
public abstract String loadRes(
|
||||||
@WebParam(name = FileResource.XML_NAME) FileResource res,
|
@WebParam(name = FileResource.XML_NAME) FileResource res,
|
||||||
@WebParam(name = "encoding") String encoding) throws XServicesFault;
|
@WebParam(name = PARAM_ENCODING) String encoding) throws XServicesFault;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param res
|
* @param res
|
||||||
|
@ -148,7 +153,7 @@ public interface FileService {
|
||||||
@WebMethod(operationName = OPERATION_LOADRESOURCEFROMARCHIVE)
|
@WebMethod(operationName = OPERATION_LOADRESOURCEFROMARCHIVE)
|
||||||
public abstract String loadResFromArchive(
|
public abstract String loadResFromArchive(
|
||||||
@WebParam(name = "archiveresource") ArchiveResource res,
|
@WebParam(name = "archiveresource") ArchiveResource res,
|
||||||
@WebParam(name = "encoding") String encoding) throws XServicesFault;
|
@WebParam(name = PARAM_ENCODING) String encoding) throws XServicesFault;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param message
|
* @param message
|
||||||
|
@ -162,13 +167,17 @@ public interface FileService {
|
||||||
@WebMethod(operationName = OPERATION_ECHOTOFILE)
|
@WebMethod(operationName = OPERATION_ECHOTOFILE)
|
||||||
public abstract ReturnCode echo2file(
|
public abstract ReturnCode echo2file(
|
||||||
@WebParam(name = "message") @XmlElement(required=true) String message,
|
@WebParam(name = "message") @XmlElement(required=true) String message,
|
||||||
@WebParam(name = "file") @XmlElement(required=true) String file,
|
@WebParam(name = PARAM_FILE) @XmlElement(required=true) String file,
|
||||||
@WebParam(name = "encoding") String encoding,
|
@WebParam(name = PARAM_ENCODING) String encoding,
|
||||||
@WebParam(name = "append") boolean append) throws XServicesFault;
|
@WebParam(name = "append") boolean append) throws XServicesFault;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param res
|
* Changes the owner of a file or all files inside specified directories.
|
||||||
* @param owner
|
* Right now it has effect only under Unix/ Linux as it is implemented through
|
||||||
|
* the 'chown' command.
|
||||||
|
*
|
||||||
|
* @param res Collection of files/ directories
|
||||||
|
* @param owner Identifier of the new owner
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@WebMethod(operationName = OPERATION_CHANGEOWNER)
|
@WebMethod(operationName = OPERATION_CHANGEOWNER)
|
||||||
|
@ -177,8 +186,12 @@ public interface FileService {
|
||||||
@WebParam(name = "owner") @XmlElement(required=true) String owner);
|
@WebParam(name = "owner") @XmlElement(required=true) String owner);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param res
|
* Changes the group owner of a file or all files inside specified directories.
|
||||||
* @param group
|
* Right now it has effect only under Unix/ Linux as it is implemented through
|
||||||
|
* the 'chgrp' command.
|
||||||
|
*
|
||||||
|
* @param res Collection of files/ directories
|
||||||
|
* @param group Identifier of the new group owner
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@WebMethod(operationName = OPERATION_CHANGEGROUP)
|
@WebMethod(operationName = OPERATION_CHANGEGROUP)
|
||||||
|
|
|
@ -0,0 +1,102 @@
|
||||||
|
/*
|
||||||
|
* 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.ws;
|
||||||
|
|
||||||
|
import java.math.BigInteger;
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.jws.WebMethod;
|
||||||
|
import javax.jws.WebParam;
|
||||||
|
import javax.jws.WebService;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
|
||||||
|
import net.brutex.xservices.types.DateFormatType;
|
||||||
|
import net.brutex.xservices.types.DateTimeUnits;
|
||||||
|
import net.brutex.xservices.types.ScheduledJob;
|
||||||
|
import net.brutex.xservices.util.BrutexNamespaces;
|
||||||
|
|
||||||
|
import org.apache.cxf.annotations.WSDLDocumentation;
|
||||||
|
import org.apache.cxf.annotations.WSDLDocumentationCollection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Job management services.
|
||||||
|
* @author Brian Rosenberger
|
||||||
|
* @since 0.5.0
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES)
|
||||||
|
public interface JobService {
|
||||||
|
|
||||||
|
public static final String SERVICE_NAME = "JobService";
|
||||||
|
final String OPERATION_GETJOBLIST = "getJobs";
|
||||||
|
final String OPERATION_SCHEDULEJOB = "scheduleJob";
|
||||||
|
final String OPERATION_GETJOB = "getJob";
|
||||||
|
final String OPERATION_DELETEJOB = "deleteJob";
|
||||||
|
|
||||||
|
final String PARAM_JOB = "job";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a full list of all scheduled jobs.
|
||||||
|
*
|
||||||
|
* @return List of scheduled jobs
|
||||||
|
* @throws XServicesFault
|
||||||
|
*/
|
||||||
|
@WebMethod(operationName=OPERATION_GETJOBLIST)
|
||||||
|
@WSDLDocumentation(value="Get list of scheduled jobs")
|
||||||
|
public abstract List<ScheduledJob> getJobList() throws XServicesFault;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a job to the scheduler.
|
||||||
|
*
|
||||||
|
* @param job
|
||||||
|
* @return The unique identifier of the job.
|
||||||
|
* @throws XServicesFault
|
||||||
|
*/
|
||||||
|
@WebMethod(operationName=OPERATION_SCHEDULEJOB)
|
||||||
|
@WSDLDocumentation(value="Schedule a job")
|
||||||
|
public abstract String scheduleJob(
|
||||||
|
@WebParam(name=PARAM_JOB) @XmlElement(required=true) ScheduledJob job)
|
||||||
|
throws XServicesFault;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a job by id.
|
||||||
|
*
|
||||||
|
* @param uuid
|
||||||
|
* @return Job details
|
||||||
|
* @throws XServicesFault
|
||||||
|
*/
|
||||||
|
@WebMethod(operationName=OPERATION_GETJOB)
|
||||||
|
@WSDLDocumentation(value="Get a job by id")
|
||||||
|
public abstract ScheduledJob getJob(
|
||||||
|
@WebParam(name="id") @XmlElement(required=true) String uuid) throws XServicesFault;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a job from scheduler.
|
||||||
|
*
|
||||||
|
* @param uuid Id of the job that should be deleted
|
||||||
|
* @throws XServicesFault
|
||||||
|
*/
|
||||||
|
@WebMethod(operationName=OPERATION_DELETEJOB)
|
||||||
|
@WSDLDocumentation(value="Delete a scheduled job.")
|
||||||
|
public abstract void deleteJob(
|
||||||
|
@WebParam(name="id") @XmlElement(required=true) String uuid) throws XServicesFault;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -28,6 +28,7 @@ import org.apache.cxf.annotations.WSDLDocumentation;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Brian Rosenberger, bru@brutex.de
|
* @author Brian Rosenberger, bru@brutex.de
|
||||||
|
* @since 0.4.0
|
||||||
*/
|
*/
|
||||||
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES)
|
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES)
|
||||||
public interface MiscService {
|
public interface MiscService {
|
||||||
|
|
|
@ -22,9 +22,7 @@ import javax.jws.WebService;
|
||||||
import net.brutex.xservices.types.ArchiveResource;
|
import net.brutex.xservices.types.ArchiveResource;
|
||||||
import net.brutex.xservices.types.CompressionType;
|
import net.brutex.xservices.types.CompressionType;
|
||||||
import net.brutex.xservices.types.FileResource;
|
import net.brutex.xservices.types.FileResource;
|
||||||
import net.brutex.xservices.types.FileSetResource;
|
|
||||||
import net.brutex.xservices.types.ResourceInterface;
|
import net.brutex.xservices.types.ResourceInterface;
|
||||||
import net.brutex.xservices.types.ResourceSetInterface;
|
|
||||||
import net.brutex.xservices.types.ReturnCode;
|
import net.brutex.xservices.types.ReturnCode;
|
||||||
import net.brutex.xservices.util.BrutexNamespaces;
|
import net.brutex.xservices.util.BrutexNamespaces;
|
||||||
import net.brutex.xservices.util.RunTask;
|
import net.brutex.xservices.util.RunTask;
|
||||||
|
@ -52,7 +50,6 @@ public class ArchiveServiceImpl implements ArchiveService {
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see net.brutex.xservices.ws.ArchiveService#bzip2(net.brutex.xservices.types.FileResource, java.lang.String)
|
* @see net.brutex.xservices.ws.ArchiveService#bzip2(net.brutex.xservices.types.FileResource, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = WS_OPERATION_BZIP2, action = WS_OPERATION_BZIP2)
|
@WebMethod(operationName = WS_OPERATION_BZIP2, action = WS_OPERATION_BZIP2)
|
||||||
public ReturnCode bzip2(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src,
|
public ReturnCode bzip2(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src,
|
||||||
@WebParam(name = WS_PARAM_DESTFILE) String file) {
|
@WebParam(name = WS_PARAM_DESTFILE) String file) {
|
||||||
|
@ -62,7 +59,7 @@ public class ArchiveServiceImpl implements ArchiveService {
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see net.brutex.xservices.ws.ArchiveService#bzip2FromArchive(net.brutex.xservices.types.ArchiveResource, java.lang.String)
|
* @see net.brutex.xservices.ws.ArchiveService#bzip2FromArchive(net.brutex.xservices.types.ArchiveResource, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = WS_OPERATION_BZIP2_ARCHIVE, action = WS_OPERATION_BZIP2_ARCHIVE)
|
@WebMethod(operationName = WS_OPERATION_BZIP2_ARCHIVE, action = WS_OPERATION_BZIP2_ARCHIVE)
|
||||||
public ReturnCode bzip2FromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src,
|
public ReturnCode bzip2FromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src,
|
||||||
@WebParam(name = WS_PARAM_DESTFILE) String file) {
|
@WebParam(name = WS_PARAM_DESTFILE) String file) {
|
||||||
|
@ -72,7 +69,7 @@ return null;// return bzip(src, new File(file));
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see net.brutex.xservices.ws.ArchiveService#gzip(net.brutex.xservices.types.FileResource, java.lang.String)
|
* @see net.brutex.xservices.ws.ArchiveService#gzip(net.brutex.xservices.types.FileResource, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = WS_OPERATION_GZIP, action = WS_OPERATION_GZIP)
|
@WebMethod(operationName = WS_OPERATION_GZIP, action = WS_OPERATION_GZIP)
|
||||||
public ReturnCode gzip(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src,
|
public ReturnCode gzip(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src,
|
||||||
@WebParam(name = WS_PARAM_DESTFILE) String file) {
|
@WebParam(name = WS_PARAM_DESTFILE) String file) {
|
||||||
|
@ -82,7 +79,7 @@ return null;// return bzip(src, new File(file));
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see net.brutex.xservices.ws.ArchiveService#gzipFromArchive(net.brutex.xservices.types.ArchiveResource, java.lang.String)
|
* @see net.brutex.xservices.ws.ArchiveService#gzipFromArchive(net.brutex.xservices.types.ArchiveResource, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = WS_OPERATION_GZIP_ARCHIVE, action = WS_OPERATION_GZIP_ARCHIVE)
|
@WebMethod(operationName = WS_OPERATION_GZIP_ARCHIVE, action = WS_OPERATION_GZIP_ARCHIVE)
|
||||||
public ReturnCode gzipFromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src,
|
public ReturnCode gzipFromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src,
|
||||||
@WebParam(name = WS_PARAM_DESTFILE) String file) {
|
@WebParam(name = WS_PARAM_DESTFILE) String file) {
|
||||||
|
@ -92,7 +89,7 @@ return null;// return bzip(src, new File(file));
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see net.brutex.xservices.ws.ArchiveService#gunzip(java.lang.String, java.lang.String)
|
* @see net.brutex.xservices.ws.ArchiveService#gunzip(java.lang.String, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = WS_OPERATION_GUNZIP, action = WS_OPERATION_GUNZIP)
|
@WebMethod(operationName = WS_OPERATION_GUNZIP, action = WS_OPERATION_GUNZIP)
|
||||||
public ReturnCode gunzip(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src,
|
public ReturnCode gunzip(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src,
|
||||||
@WebParam(name = WS_PARAM_DESTDIR) String dest) {
|
@WebParam(name = WS_PARAM_DESTDIR) String dest) {
|
||||||
|
@ -106,7 +103,7 @@ return null;// return bzip(src, new File(file));
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see net.brutex.xservices.ws.ArchiveService#bunzip2(java.lang.String, java.lang.String)
|
* @see net.brutex.xservices.ws.ArchiveService#bunzip2(java.lang.String, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = WS_OPERATION_BUNZIP2)
|
@WebMethod(operationName = WS_OPERATION_BUNZIP2)
|
||||||
public ReturnCode bunzip2(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src,
|
public ReturnCode bunzip2(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src,
|
||||||
@WebParam(name = WS_PARAM_DESTDIR) String dest) {
|
@WebParam(name = WS_PARAM_DESTDIR) String dest) {
|
||||||
|
@ -120,7 +117,7 @@ return null;// return bzip(src, new File(file));
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see net.brutex.xservices.ws.ArchiveService#gunzipFromURL(java.lang.String, java.lang.String)
|
* @see net.brutex.xservices.ws.ArchiveService#gunzipFromURL(java.lang.String, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "gunzipFromURL")
|
@WebMethod(operationName = "gunzipFromURL")
|
||||||
public ReturnCode gunzipFromURL(@WebParam(name = WS_PARAM_SOURCEURL) String src,
|
public ReturnCode gunzipFromURL(@WebParam(name = WS_PARAM_SOURCEURL) String src,
|
||||||
@WebParam(name = WS_PARAM_DESTDIR) String dest) {
|
@WebParam(name = WS_PARAM_DESTDIR) String dest) {
|
||||||
|
@ -134,7 +131,7 @@ return null;// return bzip(src, new File(file));
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see net.brutex.xservices.ws.ArchiveService#bunzip2FromURL(java.lang.String, java.lang.String)
|
* @see net.brutex.xservices.ws.ArchiveService#bunzip2FromURL(java.lang.String, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "bunzip2FromURL")
|
@WebMethod(operationName = "bunzip2FromURL")
|
||||||
public ReturnCode bunzip2FromURL(@WebParam(name = WS_PARAM_SOURCEURL) String src,
|
public ReturnCode bunzip2FromURL(@WebParam(name = WS_PARAM_SOURCEURL) String src,
|
||||||
@WebParam(name = WS_PARAM_DESTDIR) String dest) {
|
@WebParam(name = WS_PARAM_DESTDIR) String dest) {
|
||||||
|
@ -148,7 +145,7 @@ return null;// return bzip(src, new File(file));
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see net.brutex.xservices.ws.ArchiveService#zip(net.brutex.xservices.types.FileResource, java.lang.String, boolean, java.lang.String, int)
|
* @see net.brutex.xservices.ws.ArchiveService#zip(net.brutex.xservices.types.FileResource, java.lang.String, boolean, java.lang.String, int)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "zip")
|
@WebMethod(operationName = "zip")
|
||||||
public ReturnCode zip(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src,
|
public ReturnCode zip(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src,
|
||||||
@WebParam(name = WS_PARAM_DESTFILE) String file,
|
@WebParam(name = WS_PARAM_DESTFILE) String file,
|
||||||
|
@ -167,7 +164,7 @@ return null;// return bzip(src, new File(file));
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see net.brutex.xservices.ws.ArchiveService#zipFromArchive(net.brutex.xservices.types.ArchiveResource, java.lang.String, boolean, java.lang.String, int)
|
* @see net.brutex.xservices.ws.ArchiveService#zipFromArchive(net.brutex.xservices.types.ArchiveResource, java.lang.String, boolean, java.lang.String, int)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "zipFromArchive")
|
@WebMethod(operationName = "zipFromArchive")
|
||||||
public ReturnCode zipFromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src,
|
public ReturnCode zipFromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src,
|
||||||
@WebParam(name = WS_PARAM_DESTFILE) String file,
|
@WebParam(name = WS_PARAM_DESTFILE) String file,
|
||||||
|
@ -180,7 +177,7 @@ return null;// return bzip(src, new File(file));
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see net.brutex.xservices.ws.ArchiveService#unzip(java.lang.String, java.lang.String, boolean, java.lang.String)
|
* @see net.brutex.xservices.ws.ArchiveService#unzip(java.lang.String, java.lang.String, boolean, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "unzip")
|
@WebMethod(operationName = "unzip")
|
||||||
public ReturnCode unzip(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src,
|
public ReturnCode unzip(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src,
|
||||||
@WebParam(name = WS_PARAM_DESTDIR) String dest,
|
@WebParam(name = WS_PARAM_DESTDIR) String dest,
|
||||||
|
@ -192,7 +189,7 @@ return null;// return bzip(src, new File(file));
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see net.brutex.xservices.ws.ArchiveService#unrar(java.lang.String, java.lang.String)
|
* @see net.brutex.xservices.ws.ArchiveService#unrar(java.lang.String, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "unrar")
|
@WebMethod(operationName = "unrar")
|
||||||
public ReturnCode unrar(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src,
|
public ReturnCode unrar(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src,
|
||||||
@WebParam(name = WS_PARAM_DESTDIR) String dest) {
|
@WebParam(name = WS_PARAM_DESTDIR) String dest) {
|
||||||
|
@ -202,7 +199,7 @@ return null;// return bzip(src, new File(file));
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see net.brutex.xservices.ws.ArchiveService#untar(java.lang.String, java.lang.String, boolean, net.brutex.xservices.types.CompressionType)
|
* @see net.brutex.xservices.ws.ArchiveService#untar(java.lang.String, java.lang.String, boolean, net.brutex.xservices.types.CompressionType)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "untar")
|
@WebMethod(operationName = "untar")
|
||||||
public ReturnCode untar(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src,
|
public ReturnCode untar(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src,
|
||||||
@WebParam(name = WS_PARAM_DESTDIR) String dest,
|
@WebParam(name = WS_PARAM_DESTDIR) String dest,
|
||||||
|
|
|
@ -44,7 +44,7 @@ public class DateServiceImpl implements DateService {
|
||||||
|
|
||||||
private static String ERR_INVALIDFORMAT = "Invalid format pattern.";
|
private static String ERR_INVALIDFORMAT = "Invalid format pattern.";
|
||||||
private static String ERR_INVALIDTIMEZONE = "Invalid timezone.";
|
private static String ERR_INVALIDTIMEZONE = "Invalid timezone.";
|
||||||
@Override
|
|
||||||
public GregorianCalendar getDate(String timezone) throws XServicesFault {
|
public GregorianCalendar getDate(String timezone) throws XServicesFault {
|
||||||
if (! isValidTimezone(timezone) ) {
|
if (! isValidTimezone(timezone) ) {
|
||||||
String valid_ids = "";
|
String valid_ids = "";
|
||||||
|
@ -60,7 +60,7 @@ public class DateServiceImpl implements DateService {
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public BigInteger getTimestamp() {
|
public BigInteger getTimestamp() {
|
||||||
Date d = new Date();
|
Date d = new Date();
|
||||||
long l = d.getTime();
|
long l = d.getTime();
|
||||||
|
@ -68,7 +68,7 @@ public class DateServiceImpl implements DateService {
|
||||||
return timestamp;
|
return timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public GregorianCalendar getInTimezone(GregorianCalendar cal,
|
public GregorianCalendar getInTimezone(GregorianCalendar cal,
|
||||||
String timezone) throws XServicesFault {
|
String timezone) throws XServicesFault {
|
||||||
if(! isValidTimezone(timezone)) throw new XServicesFault(ERR_INVALIDTIMEZONE);
|
if(! isValidTimezone(timezone)) throw new XServicesFault(ERR_INVALIDTIMEZONE);
|
||||||
|
@ -77,12 +77,12 @@ public class DateServiceImpl implements DateService {
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String formatDate(GregorianCalendar cal, DateFormatType format) throws XServicesFault {
|
public String formatDate(GregorianCalendar cal, DateFormatType format) throws XServicesFault {
|
||||||
return formatDateAdvanced(cal, format.format());
|
return formatDateAdvanced(cal, format.format());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String formatDateAdvanced(GregorianCalendar cal, String format)
|
public String formatDateAdvanced(GregorianCalendar cal, String format)
|
||||||
throws XServicesFault {
|
throws XServicesFault {
|
||||||
String result= null;
|
String result= null;
|
||||||
|
@ -95,12 +95,12 @@ public class DateServiceImpl implements DateService {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public GregorianCalendar parseDate(String s, DateFormatType format, String timezone) throws XServicesFault {
|
public GregorianCalendar parseDate(String s, DateFormatType format, String timezone) throws XServicesFault {
|
||||||
return parseDateAdvanced(s, format.format(), timezone);
|
return parseDateAdvanced(s, format.format(), timezone);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public GregorianCalendar parseDateAdvanced(String s, String format, String timezone) throws XServicesFault {
|
public GregorianCalendar parseDateAdvanced(String s, String format, String timezone) throws XServicesFault {
|
||||||
SimpleDateFormat f = null;
|
SimpleDateFormat f = null;
|
||||||
Date date = null;
|
Date date = null;
|
||||||
|
@ -121,7 +121,7 @@ public class DateServiceImpl implements DateService {
|
||||||
return cal;
|
return cal;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public BigInteger dateTimeDiff(GregorianCalendar fromCal,
|
public BigInteger dateTimeDiff(GregorianCalendar fromCal,
|
||||||
GregorianCalendar toCal) throws XServicesFault {
|
GregorianCalendar toCal) throws XServicesFault {
|
||||||
long diff = toCal.getTimeInMillis() - fromCal.getTimeInMillis();
|
long diff = toCal.getTimeInMillis() - fromCal.getTimeInMillis();
|
||||||
|
@ -129,7 +129,7 @@ public class DateServiceImpl implements DateService {
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public BigInteger dateTimeDiff2(GregorianCalendar fromCal,
|
public BigInteger dateTimeDiff2(GregorianCalendar fromCal,
|
||||||
GregorianCalendar toCal, DateTimeUnits unit) throws XServicesFault {
|
GregorianCalendar toCal, DateTimeUnits unit) throws XServicesFault {
|
||||||
BigInteger d = dateTimeDiff(fromCal, toCal);
|
BigInteger d = dateTimeDiff(fromCal, toCal);
|
||||||
|
@ -149,7 +149,7 @@ public class DateServiceImpl implements DateService {
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public GregorianCalendar dateAdd(GregorianCalendar cal, BigInteger value, DateTimeUnits unit)
|
public GregorianCalendar dateAdd(GregorianCalendar cal, BigInteger value, DateTimeUnits unit)
|
||||||
throws XServicesFault {
|
throws XServicesFault {
|
||||||
switch (unit) {
|
switch (unit) {
|
||||||
|
|
|
@ -17,177 +17,248 @@
|
||||||
package net.brutex.xservices.ws.impl;
|
package net.brutex.xservices.ws.impl;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import javax.jws.WebMethod;
|
import javax.jws.WebMethod;
|
||||||
import javax.jws.WebParam;
|
import javax.jws.WebParam;
|
||||||
import javax.jws.WebService;
|
import javax.jws.WebService;
|
||||||
import net.brutex.xservices.types.HostConnection;
|
import net.brutex.xservices.types.HostConnection;
|
||||||
import net.brutex.xservices.types.ReturnCode;
|
import net.brutex.xservices.types.ReturnCode;
|
||||||
import net.brutex.xservices.util.BrutexNamespaces;
|
import net.brutex.xservices.util.BrutexNamespaces;
|
||||||
|
import net.brutex.xservices.util.JobWrapper;
|
||||||
import net.brutex.xservices.util.RunTask;
|
import net.brutex.xservices.util.RunTask;
|
||||||
import net.brutex.xservices.ws.ExecuteService;
|
import net.brutex.xservices.ws.ExecuteService;
|
||||||
|
import net.brutex.xservices.ws.XServicesFault;
|
||||||
|
|
||||||
import org.apache.tools.ant.taskdefs.ExecTask;
|
import org.apache.tools.ant.taskdefs.ExecTask;
|
||||||
import org.apache.tools.ant.taskdefs.optional.net.RExecTask;
|
import org.apache.tools.ant.taskdefs.optional.net.RExecTask;
|
||||||
import org.apache.tools.ant.taskdefs.optional.net.TelnetTask;
|
import org.apache.tools.ant.taskdefs.optional.net.TelnetTask;
|
||||||
import org.apache.tools.ant.taskdefs.optional.ssh.SSHExec;
|
import org.apache.tools.ant.taskdefs.optional.ssh.SSHExec;
|
||||||
import org.apache.tools.ant.types.Commandline;
|
import org.apache.tools.ant.types.Commandline;
|
||||||
|
import org.mozilla.javascript.Context;
|
||||||
|
import org.mozilla.javascript.Scriptable;
|
||||||
|
import org.quartz.JobBuilder;
|
||||||
|
import org.quartz.JobDetail;
|
||||||
|
import org.quartz.Scheduler;
|
||||||
|
import org.quartz.SchedulerException;
|
||||||
|
import org.quartz.Trigger;
|
||||||
|
import static org.quartz.TriggerBuilder.*;
|
||||||
|
import static org.quartz.SimpleScheduleBuilder.*;
|
||||||
|
import org.quartz.TriggerUtils;
|
||||||
|
import org.quartz.impl.StdSchedulerFactory;
|
||||||
|
import org.quartz.impl.triggers.SimpleTriggerImpl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Brian Rosenberger, bru@brutex.de
|
* @author Brian Rosenberger, bru@brutex.de
|
||||||
*/
|
*/
|
||||||
@WebService(
|
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, endpointInterface = "net.brutex.xservices.ws.ExecuteService", serviceName = "ExecuteService")
|
||||||
targetNamespace=BrutexNamespaces.WS_XSERVICES,
|
|
||||||
endpointInterface="net.brutex.xservices.ws.ExecuteService",
|
|
||||||
serviceName="ExecuteService"
|
|
||||||
)
|
|
||||||
public class ExecuteServiceImpl implements ExecuteService {
|
public class ExecuteServiceImpl implements ExecuteService {
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see net.brutex.xservices.ws.impl.ExecuteService#runCommand(java.lang.String, java.lang.String, long)
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* net.brutex.xservices.ws.impl.ExecuteService#runCommand(java.lang.String,
|
||||||
|
* java.lang.String, long)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "runCommand")
|
@WebMethod(operationName = "runCommand")
|
||||||
public ReturnCode runCommand(@WebParam(name = "executable") String cmd,
|
public ReturnCode runCommand(@WebParam(name = "executable") String cmd,
|
||||||
@WebParam(name = "argline") String args,
|
@WebParam(name = "argline") String args,
|
||||||
@WebParam(name = "timeout") long timeout) {
|
@WebParam(name = "timeout") long timeout) {
|
||||||
|
|
||||||
return executeCommand(cmd,
|
return executeCommand(cmd, Commandline.translateCommandline(args),
|
||||||
Commandline.translateCommandline(args),
|
null, false, null, false, true, false, timeout);
|
||||||
null,
|
|
||||||
false,
|
|
||||||
null,
|
|
||||||
false,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
timeout);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see net.brutex.xservices.ws.impl.ExecuteService#runCommandWithArgs(java.lang.String, java.lang.String[], long)
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* net.brutex.xservices.ws.impl.ExecuteService#runCommandWithArgs(java.lang
|
||||||
|
* .String, java.lang.String[], long)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "runCommandWithArgs")
|
@WebMethod(operationName = "runCommandWithArgs")
|
||||||
public ReturnCode runCommandWithArgs(@WebParam(name = "executable") String cmd,
|
public ReturnCode runCommandWithArgs(
|
||||||
|
@WebParam(name = "executable") String cmd,
|
||||||
@WebParam(name = "arg") String[] args,
|
@WebParam(name = "arg") String[] args,
|
||||||
@WebParam(name = "timeout") long timeout) {
|
@WebParam(name = "timeout") long timeout) {
|
||||||
|
|
||||||
return executeCommand(cmd,
|
return executeCommand(cmd, args, null, false, null, false, true, false,
|
||||||
args,
|
|
||||||
null,
|
|
||||||
false,
|
|
||||||
null,
|
|
||||||
false,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
timeout);
|
timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see net.brutex.xservices.ws.impl.ExecuteService#runCommandAsync(java.lang.String, java.lang.String)
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* net.brutex.xservices.ws.impl.ExecuteService#runCommandAsync(java.lang
|
||||||
|
* .String, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "runCommandAsync")
|
@WebMethod(operationName = "runCommandAsync")
|
||||||
public ReturnCode runCommandAsync(@WebParam(name = "executable") String cmd,
|
public ReturnCode runCommandAsync(
|
||||||
|
@WebParam(name = "executable") String cmd,
|
||||||
@WebParam(name = "argline") String args) {
|
@WebParam(name = "argline") String args) {
|
||||||
|
|
||||||
return executeCommand(cmd,
|
return executeCommand(cmd, Commandline.translateCommandline(args),
|
||||||
Commandline.translateCommandline(args),
|
null, true, null, false, true, false, 0);
|
||||||
null,
|
|
||||||
true,
|
|
||||||
null,
|
|
||||||
false,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see net.brutex.xservices.ws.impl.ExecuteService#runCommandAsyncWithArgs(java.lang.String, java.lang.String[])
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* net.brutex.xservices.ws.impl.ExecuteService#runCommandAsyncWithArgs(java
|
||||||
|
* .lang.String, java.lang.String[])
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "runCommandAsyncWithArgs")
|
@WebMethod(operationName = "runCommandAsyncWithArgs")
|
||||||
public ReturnCode runCommandAsyncWithArgs(@WebParam(name = "executable") String cmd,
|
public ReturnCode runCommandAsyncWithArgs(
|
||||||
|
@WebParam(name = "executable") String cmd,
|
||||||
@WebParam(name = "arg") String[] args) {
|
@WebParam(name = "arg") String[] args) {
|
||||||
|
|
||||||
return executeCommand(cmd,
|
return executeCommand(cmd, args, null, true, null, false, true, false,
|
||||||
args,
|
|
||||||
null,
|
|
||||||
true,
|
|
||||||
null,
|
|
||||||
false,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
0);
|
0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see net.brutex.xservices.ws.impl.ExecuteService#runCommandWithSSH(java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, long)
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* net.brutex.xservices.ws.impl.ExecuteService#runCommandWithSSH(java.lang
|
||||||
|
* .String, int, java.lang.String, java.lang.String, java.lang.String, long)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "runCommandWithSSH")
|
@WebMethod(operationName = "runCommandWithSSH")
|
||||||
public ReturnCode runCommandWithSSH(@WebParam(name = "host") HostConnection host,
|
public ReturnCode runCommandWithSSH(
|
||||||
|
@WebParam(name = "host") HostConnection host,
|
||||||
@WebParam(name = "command") String cmd,
|
@WebParam(name = "command") String cmd,
|
||||||
@WebParam(name = "timeout") long timeout) {
|
@WebParam(name = "timeout") long timeout) {
|
||||||
|
|
||||||
return sshExec(host.hostname, host.user, host.password, host.port, cmd, timeout);
|
return sshExec(host.hostname, host.user, host.password, host.port, cmd,
|
||||||
|
timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see net.brutex.xservices.ws.impl.ExecuteService#runCommandWithSSHKeyAuth(java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, long)
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* net.brutex.xservices.ws.impl.ExecuteService#runCommandWithSSHKeyAuth(
|
||||||
|
* java.lang.String, int, java.lang.String, java.lang.String,
|
||||||
|
* java.lang.String, java.lang.String, long)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "runCommandWithSSHKeyAuth")
|
@WebMethod(operationName = "runCommandWithSSHKeyAuth")
|
||||||
public ReturnCode runCommandWithSSHKeyAuth(@WebParam(name = "host") HostConnection host,
|
public ReturnCode runCommandWithSSHKeyAuth(
|
||||||
|
@WebParam(name = "host") HostConnection host,
|
||||||
@WebParam(name = "keyfile") String keyfile,
|
@WebParam(name = "keyfile") String keyfile,
|
||||||
@WebParam(name = "command") String cmd,
|
@WebParam(name = "command") String cmd,
|
||||||
@WebParam(name = "timeout") long timeout) {
|
@WebParam(name = "timeout") long timeout) {
|
||||||
|
|
||||||
return sshExecWithCert(host.hostname, host.user, host.password, keyfile, host.port, cmd, timeout);
|
return sshExecWithCert(host.hostname, host.user, host.password,
|
||||||
|
keyfile, host.port, cmd, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see net.brutex.xservices.ws.impl.ExecuteService#rExec(net.brutex.xservices.types.HostConnection, java.lang.String, long)
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* net.brutex.xservices.ws.impl.ExecuteService#rExec(net.brutex.xservices
|
||||||
|
* .types.HostConnection, java.lang.String, long)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "rExec")
|
@WebMethod(operationName = "rExec")
|
||||||
public ReturnCode rExec(@WebParam(name = "host") HostConnection host,
|
public ReturnCode rExec(@WebParam(name = "host") HostConnection host,
|
||||||
@WebParam(name = "command") String cmd,
|
@WebParam(name = "command") String cmd,
|
||||||
@WebParam(name = "timeout") long timeout) {
|
@WebParam(name = "timeout") long timeout) {
|
||||||
return rexec(host.hostname, host.port, host.user, host.password, cmd, timeout);
|
return rexec(host.hostname, host.port, host.user, host.password, cmd,
|
||||||
|
timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see net.brutex.xservices.ws.impl.ExecuteService#runTelnet(net.brutex.xservices.types.HostConnection, java.lang.String, java.lang.String, java.lang.String, long)
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* net.brutex.xservices.ws.impl.ExecuteService#runTelnet(net.brutex.xservices
|
||||||
|
* .types.HostConnection, java.lang.String, java.lang.String,
|
||||||
|
* java.lang.String, long)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@WebMethod(operationName = "telnet")
|
@WebMethod(operationName = "telnet")
|
||||||
public ReturnCode runTelnet(@WebParam(name = "host") HostConnection host,
|
public ReturnCode runTelnet(@WebParam(name = "host") HostConnection host,
|
||||||
@WebParam(name = "prompt") String prompt,
|
@WebParam(name = "prompt") String prompt,
|
||||||
@WebParam(name = "command") String cmd,
|
@WebParam(name = "command") String cmd,
|
||||||
@WebParam(name = "expect") String expect,
|
@WebParam(name = "expect") String expect,
|
||||||
@WebParam(name = "timeout") long timeout) {
|
@WebParam(name = "timeout") long timeout) {
|
||||||
return telnet(host.hostname, host.port, host.user, host.password, cmd, timeout, prompt, expect);
|
return telnet(host.hostname, host.port, host.user, host.password, cmd,
|
||||||
|
timeout, prompt, expect);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void runJScript(String script) throws XServicesFault {
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@WebMethod(exclude = true)
|
@WebMethod(exclude = true)
|
||||||
private ReturnCode executeCommand(String executable,
|
private ReturnCode executeCommand(String executable, String[] args,
|
||||||
String[] args,
|
File dir, boolean spawn, String inputstring,
|
||||||
File dir,
|
boolean newenvironment, boolean vmlauncher, boolean searchpath,
|
||||||
boolean spawn,
|
|
||||||
String inputstring,
|
|
||||||
boolean newenvironment,
|
|
||||||
boolean vmlauncher,
|
|
||||||
boolean searchpath,
|
|
||||||
long timeout) {
|
long timeout) {
|
||||||
ExecTask exe = new ExecTask();
|
ExecTask exe = new ExecTask();
|
||||||
RunTask runner = new RunTask(exe);
|
RunTask runner = new RunTask(exe);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Commandline cmdl = new Commandline();
|
* Commandline cmdl = new Commandline(); cmdl.setExecutable(executable);
|
||||||
cmdl.setExecutable(executable);
|
* cmdl.addArguments(args); System.out.println(cmdl.describeCommand());
|
||||||
cmdl.addArguments(args);
|
|
||||||
System.out.println(cmdl.describeCommand());
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
exe.setExecutable(executable);
|
exe.setExecutable(executable);
|
||||||
|
@ -214,12 +285,8 @@ public class ExecuteServiceImpl implements ExecuteService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@WebMethod(exclude = true)
|
@WebMethod(exclude = true)
|
||||||
private ReturnCode sshExec(String host,
|
private ReturnCode sshExec(String host, String username, String password,
|
||||||
String username,
|
int port, String command, long timeout) {
|
||||||
String password,
|
|
||||||
int port,
|
|
||||||
String command,
|
|
||||||
long timeout) {
|
|
||||||
SSHExec sshexec = new SSHExec();
|
SSHExec sshexec = new SSHExec();
|
||||||
RunTask runner = new RunTask(sshexec);
|
RunTask runner = new RunTask(sshexec);
|
||||||
sshexec.setHost(host);
|
sshexec.setHost(host);
|
||||||
|
@ -234,12 +301,8 @@ public class ExecuteServiceImpl implements ExecuteService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@WebMethod(exclude = true)
|
@WebMethod(exclude = true)
|
||||||
private ReturnCode sshExecWithCert(String host,
|
private ReturnCode sshExecWithCert(String host, String username,
|
||||||
String username,
|
String passphrase, String keyfile, int port, String command,
|
||||||
String passphrase,
|
|
||||||
String keyfile,
|
|
||||||
int port,
|
|
||||||
String command,
|
|
||||||
long timeout) {
|
long timeout) {
|
||||||
SSHExec sshexec = new SSHExec();
|
SSHExec sshexec = new SSHExec();
|
||||||
RunTask runner = new RunTask(sshexec);
|
RunTask runner = new RunTask(sshexec);
|
||||||
|
@ -256,12 +319,8 @@ public class ExecuteServiceImpl implements ExecuteService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@WebMethod(exclude = true)
|
@WebMethod(exclude = true)
|
||||||
private ReturnCode rexec(String host,
|
private ReturnCode rexec(String host, int port, String username,
|
||||||
int port,
|
String password, String command, long timeout) {
|
||||||
String username,
|
|
||||||
String password,
|
|
||||||
String command,
|
|
||||||
long timeout) {
|
|
||||||
RExecTask rexec = new RExecTask();
|
RExecTask rexec = new RExecTask();
|
||||||
RunTask runner = new RunTask(rexec);
|
RunTask runner = new RunTask(rexec);
|
||||||
rexec.setServer(host);
|
rexec.setServer(host);
|
||||||
|
@ -275,12 +334,9 @@ public class ExecuteServiceImpl implements ExecuteService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@WebMethod(exclude = true)
|
@WebMethod(exclude = true)
|
||||||
private ReturnCode telnet(String host,
|
private ReturnCode telnet(String host, int port, String username,
|
||||||
int port,
|
String password, String command, long timeout, String prompt,
|
||||||
String username,
|
String expect) {
|
||||||
String password,
|
|
||||||
String command,
|
|
||||||
long timeout, String prompt, String expect) {
|
|
||||||
TelnetTask rexec = new TelnetTask();
|
TelnetTask rexec = new TelnetTask();
|
||||||
RunTask runner = new RunTask(rexec);
|
RunTask runner = new RunTask(rexec);
|
||||||
rexec.setServer(host);
|
rexec.setServer(host);
|
||||||
|
|
|
@ -64,7 +64,7 @@ public class FileServiceImpl implements FileService {
|
||||||
* @see net.brutex.xservices.ws.impl.FileService#basename(java.lang.String,
|
* @see net.brutex.xservices.ws.impl.FileService#basename(java.lang.String,
|
||||||
* java.lang.String)
|
* java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
public String basename(String filename, String suffix) {
|
public String basename(String filename, String suffix) {
|
||||||
final String BASENAME_VALUE = "basename.value";
|
final String BASENAME_VALUE = "basename.value";
|
||||||
Basename basename = new Basename();
|
Basename basename = new Basename();
|
||||||
|
@ -139,7 +139,7 @@ public class FileServiceImpl implements FileService {
|
||||||
* net.brutex.xservices.ws.impl.FileService#base64Encode(net.brutex.xservices
|
* net.brutex.xservices.ws.impl.FileService#base64Encode(net.brutex.xservices
|
||||||
* .types.FileSetResource)
|
* .types.FileSetResource)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
public AttachmentType downloadFile(FileResource res) throws XServicesFault {
|
public AttachmentType downloadFile(FileResource res) throws XServicesFault {
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
try {
|
try {
|
||||||
|
@ -163,7 +163,7 @@ public class FileServiceImpl implements FileService {
|
||||||
* net.brutex.xservices.ws.impl.FileService#base64Decode(net.brutex.xservices
|
* net.brutex.xservices.ws.impl.FileService#base64Decode(net.brutex.xservices
|
||||||
* .types.AttachmentType)
|
* .types.AttachmentType)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
public String uploadFile(AttachmentType file) throws XServicesFault {
|
public String uploadFile(AttachmentType file) throws XServicesFault {
|
||||||
DataHandler h = file.getContent();
|
DataHandler h = file.getContent();
|
||||||
File f = new File(file.getFilename());
|
File f = new File(file.getFilename());
|
||||||
|
@ -188,7 +188,7 @@ public class FileServiceImpl implements FileService {
|
||||||
* net.brutex.xservices.ws.impl.FileService#copy(net.brutex.xservices.types
|
* net.brutex.xservices.ws.impl.FileService#copy(net.brutex.xservices.types
|
||||||
* .FileSetResource, java.lang.String, boolean, boolean, java.lang.String)
|
* .FileSetResource, java.lang.String, boolean, boolean, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
public ReturnCode copy(FileSetResource src, String todir, boolean plm,
|
public ReturnCode copy(FileSetResource src, String todir, boolean plm,
|
||||||
boolean overwrite, String encoding) throws XServicesFault {
|
boolean overwrite, String encoding) throws XServicesFault {
|
||||||
Copy copy = new Copy();
|
Copy copy = new Copy();
|
||||||
|
@ -213,7 +213,7 @@ public class FileServiceImpl implements FileService {
|
||||||
return runner.postTask();
|
return runner.postTask();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReturnCode copyFile(String fromFile, String tofile, boolean overwrite)
|
public ReturnCode copyFile(String fromFile, String tofile, boolean overwrite)
|
||||||
throws XServicesFault {
|
throws XServicesFault {
|
||||||
Copy copy = new Copy();
|
Copy copy = new Copy();
|
||||||
|
@ -235,7 +235,7 @@ public class FileServiceImpl implements FileService {
|
||||||
* net.brutex.xservices.ws.impl.FileService#loadRes(net.brutex.xservices
|
* net.brutex.xservices.ws.impl.FileService#loadRes(net.brutex.xservices
|
||||||
* .types.FileResource, java.lang.String)
|
* .types.FileResource, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
public String loadRes(FileResource res, String encoding)
|
public String loadRes(FileResource res, String encoding)
|
||||||
throws XServicesFault {
|
throws XServicesFault {
|
||||||
if (encoding == null || encoding.equals("")) {
|
if (encoding == null || encoding.equals("")) {
|
||||||
|
@ -259,7 +259,7 @@ public class FileServiceImpl implements FileService {
|
||||||
* net.brutex.xservices.ws.impl.FileService#loadResFromArchive(net.brutex
|
* net.brutex.xservices.ws.impl.FileService#loadResFromArchive(net.brutex
|
||||||
* .xservices.types.ArchiveResource, java.lang.String)
|
* .xservices.types.ArchiveResource, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
public String loadResFromArchive(ArchiveResource res, String encoding) {
|
public String loadResFromArchive(ArchiveResource res, String encoding) {
|
||||||
if (encoding == null || encoding.equals("")) {
|
if (encoding == null || encoding.equals("")) {
|
||||||
encoding = System.getProperty("file.encoding");
|
encoding = System.getProperty("file.encoding");
|
||||||
|
@ -282,7 +282,7 @@ public class FileServiceImpl implements FileService {
|
||||||
* @see net.brutex.xservices.ws.impl.FileService#echo2file(java.lang.String,
|
* @see net.brutex.xservices.ws.impl.FileService#echo2file(java.lang.String,
|
||||||
* java.lang.String, java.lang.String, boolean)
|
* java.lang.String, java.lang.String, boolean)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
public ReturnCode echo2file(String message, String file, String encoding,
|
public ReturnCode echo2file(String message, String file, String encoding,
|
||||||
boolean append) throws XServicesFault {
|
boolean append) throws XServicesFault {
|
||||||
|
|
||||||
|
@ -316,7 +316,7 @@ public class FileServiceImpl implements FileService {
|
||||||
* net.brutex.xservices.ws.impl.FileService#changeOwner(net.brutex.xservices
|
* net.brutex.xservices.ws.impl.FileService#changeOwner(net.brutex.xservices
|
||||||
* .types.FileSetResource, java.lang.String)
|
* .types.FileSetResource, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
public ReturnCode changeOwner(FileSetResource res, String owner) {
|
public ReturnCode changeOwner(FileSetResource res, String owner) {
|
||||||
Chown chown = new Chown();
|
Chown chown = new Chown();
|
||||||
chown.setTaskName("Chown");
|
chown.setTaskName("Chown");
|
||||||
|
@ -335,7 +335,7 @@ public class FileServiceImpl implements FileService {
|
||||||
* net.brutex.xservices.ws.impl.FileService#changeGroup(net.brutex.xservices
|
* net.brutex.xservices.ws.impl.FileService#changeGroup(net.brutex.xservices
|
||||||
* .types.FileSetResource, java.lang.String)
|
* .types.FileSetResource, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
public ReturnCode changeGroup(FileSetResource res, String group) {
|
public ReturnCode changeGroup(FileSetResource res, String group) {
|
||||||
Chgrp chgrp = new Chgrp();
|
Chgrp chgrp = new Chgrp();
|
||||||
chgrp.setTaskName("Chgrp");
|
chgrp.setTaskName("Chgrp");
|
||||||
|
@ -354,7 +354,7 @@ public class FileServiceImpl implements FileService {
|
||||||
* net.brutex.xservices.ws.impl.FileService#changeMode(net.brutex.xservices
|
* net.brutex.xservices.ws.impl.FileService#changeMode(net.brutex.xservices
|
||||||
* .types.FileSetResource, java.lang.String)
|
* .types.FileSetResource, java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
public ReturnCode changeMode(FileSetResource res, String perm) {
|
public ReturnCode changeMode(FileSetResource res, String perm) {
|
||||||
Chmod chmod = new Chmod();
|
Chmod chmod = new Chmod();
|
||||||
chmod.setTaskName("Chmod");
|
chmod.setTaskName("Chmod");
|
||||||
|
|
|
@ -0,0 +1,151 @@
|
||||||
|
/*
|
||||||
|
* 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.ws.impl;
|
||||||
|
|
||||||
|
import static org.quartz.TriggerBuilder.newTrigger;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.TimeZone;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import javax.jws.WebService;
|
||||||
|
|
||||||
|
import org.quartz.JobBuilder;
|
||||||
|
import org.quartz.JobDataMap;
|
||||||
|
import org.quartz.JobDetail;
|
||||||
|
import org.quartz.JobKey;
|
||||||
|
import org.quartz.Scheduler;
|
||||||
|
import org.quartz.SchedulerException;
|
||||||
|
import org.quartz.SimpleTrigger;
|
||||||
|
import org.quartz.Trigger;
|
||||||
|
import org.quartz.TriggerKey;
|
||||||
|
import org.quartz.impl.StdSchedulerFactory;
|
||||||
|
import org.quartz.impl.matchers.GroupMatcher;
|
||||||
|
|
||||||
|
import net.brutex.xservices.types.ScheduledJob;
|
||||||
|
import net.brutex.xservices.util.BrutexNamespaces;
|
||||||
|
import net.brutex.xservices.util.JobWrapper;
|
||||||
|
import net.brutex.xservices.ws.JobService;
|
||||||
|
import net.brutex.xservices.ws.XServicesFault;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Brian Rosenberger
|
||||||
|
* @since 0.5.0
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, endpointInterface = "net.brutex.xservices.ws.JobService", serviceName = JobService.SERVICE_NAME)
|
||||||
|
public class JobServiceImpl implements JobService {
|
||||||
|
|
||||||
|
|
||||||
|
public List<ScheduledJob> getJobList() throws XServicesFault {
|
||||||
|
List<ScheduledJob> joblist = new ArrayList<ScheduledJob>();
|
||||||
|
try {
|
||||||
|
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
|
||||||
|
List<String> jobgroups = scheduler.getJobGroupNames();
|
||||||
|
for (String g : jobgroups) {
|
||||||
|
GroupMatcher m = GroupMatcher.groupContains(g);
|
||||||
|
Set<JobKey> keyset = scheduler.getJobKeys(m);
|
||||||
|
for (JobKey key : keyset) {
|
||||||
|
JobDataMap detail = scheduler.getJobDetail(key)
|
||||||
|
.getJobDataMap();
|
||||||
|
ScheduledJob job = new ScheduledJob(key.getName(),
|
||||||
|
(GregorianCalendar) detail.get("date"),
|
||||||
|
detail.getString("script"));
|
||||||
|
joblist.add(job);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (SchedulerException e) {
|
||||||
|
throw new XServicesFault(e);
|
||||||
|
}
|
||||||
|
return joblist;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ScheduledJob getJob(String uuid) throws XServicesFault {
|
||||||
|
try {
|
||||||
|
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
|
||||||
|
JobDetail job = scheduler.getJobDetail(new JobKey(uuid, "DEFAULT"));
|
||||||
|
if (job == null)
|
||||||
|
throw new XServicesFault("Job not found.");
|
||||||
|
Trigger t = scheduler.getTrigger(new TriggerKey(uuid));
|
||||||
|
GregorianCalendar cal = new GregorianCalendar(TimeZone.getDefault());
|
||||||
|
cal.setTime(t.getStartTime());
|
||||||
|
return new ScheduledJob(uuid, cal, job.getJobDataMap().getString(
|
||||||
|
"script"), job.getDescription());
|
||||||
|
} catch (SchedulerException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new XServicesFault(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void deleteJob(String uuid) throws XServicesFault {
|
||||||
|
try {
|
||||||
|
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
|
||||||
|
JobKey key = new JobKey(uuid, "DEFAULT");
|
||||||
|
JobDetail job = scheduler.getJobDetail(key);
|
||||||
|
if (job == null)
|
||||||
|
throw new XServicesFault("Job not found.");
|
||||||
|
Trigger t = scheduler.getTrigger(new TriggerKey(uuid));
|
||||||
|
scheduler.deleteJob(key);
|
||||||
|
} catch (SchedulerException e) {
|
||||||
|
throw new XServicesFault(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String scheduleJob(ScheduledJob job) throws XServicesFault {
|
||||||
|
try {
|
||||||
|
// Grab the Scheduler instance from the Factory
|
||||||
|
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
|
||||||
|
|
||||||
|
// and start it off
|
||||||
|
|
||||||
|
if (!scheduler.isStarted())
|
||||||
|
scheduler.start();
|
||||||
|
if (scheduler.isInStandbyMode())
|
||||||
|
scheduler.resumeAll();
|
||||||
|
|
||||||
|
String identity = UUID.randomUUID().toString();
|
||||||
|
//String identity = "test";
|
||||||
|
JobDetail job2 = JobBuilder.newJob(JobWrapper.class)
|
||||||
|
.withIdentity(identity).build();
|
||||||
|
|
||||||
|
|
||||||
|
job2.getJobDataMap().put("script", job.getScript());
|
||||||
|
job2.getJobDataMap().put("description", job.getDescription());
|
||||||
|
job2.getJobDataMap().put("date", job.getDate());
|
||||||
|
|
||||||
|
SimpleTrigger t = (SimpleTrigger) newTrigger()
|
||||||
|
.withIdentity(identity).startAt(job.getDate().getTime())
|
||||||
|
.build();
|
||||||
|
;
|
||||||
|
|
||||||
|
scheduler.scheduleJob(job2, t);
|
||||||
|
return identity;
|
||||||
|
} catch (SchedulerException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new XServicesFault(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
org.quartz.scheduler.instanceName = XServicesScheduler
|
||||||
|
org.quartz.threadPool.threadCount = 3
|
||||||
|
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
|
||||||
|
#org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
|
||||||
|
#org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.CloudscapeDelegate
|
||||||
|
#org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
|
||||||
|
#org.quartz.jobStore.dataSource = QUARTZ
|
||||||
|
|
||||||
|
#org.quartz.dataSource.QUARTZ.driver = org.hsqldb.jdbcDriver
|
||||||
|
#org.quartz.dataSource.QUARTZ.URL = jdbc:hsqldb:file:quartz_store;shutdown=true;
|
||||||
|
#org.quartz.dataSource.QUARTZ.user = sa
|
||||||
|
#org.quartz.dataSource.QUARTZ.connectionProvider.class = net.brutex.xservices.util.BrutexQuartzConnectionProvider
|
||||||
|
|
||||||
|
#String url = “jdbc:hsqldb:file:/path/to/database/file”;
|
||||||
|
#String user = “sa”;
|
||||||
|
#String password = “”;
|
||||||
|
#Connection c = DriverManager.getConnection(url, user, password);
|
|
@ -1,21 +1,488 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
|
<con:soapui-project name="ExecuteService" soapui-version="3.6.1" abortOnError="false" runType="SEQUENTIAL" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:interface xsi:type="con:WsdlInterface" wsaVersion="NONE" name="ExecuteServiceSoapBinding" type="wsdl" bindingName="{http://ws.xservices.brutex.net}ExecuteServiceSoapBinding" soapVersion="1_1" anonymous="optional" definition="http://localhost:8080/XServices/ExecuteService?wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="http://localhost:8080/XServices/ExecuteService?wsdl"><con:part><con:url>http://localhost:8080/XServices/ExecuteService?wsdl</con:url><con:content><![CDATA[<wsdl:definitions name="ExecuteService" targetNamespace="http://ws.xservices.brutex.net" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.xservices.brutex.net" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<wsdl:types>
|
||||||
|
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://ws.xservices.brutex.net" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<xs:element name="antProperty" type="tns:antProperty"/>
|
||||||
|
<xs:element name="rExec" type="tns:rExec"/>
|
||||||
|
<xs:element name="rExecResponse" type="tns:rExecResponse"/>
|
||||||
|
<xs:element name="runCommand" type="tns:runCommand"/>
|
||||||
|
<xs:element name="runCommandAsync" type="tns:runCommandAsync"/>
|
||||||
|
<xs:element name="runCommandAsyncResponse" type="tns:runCommandAsyncResponse"/>
|
||||||
|
<xs:element name="runCommandAsyncWithArgs" type="tns:runCommandAsyncWithArgs"/>
|
||||||
|
<xs:element name="runCommandAsyncWithArgsResponse" type="tns:runCommandAsyncWithArgsResponse"/>
|
||||||
|
<xs:element name="runCommandResponse" type="tns:runCommandResponse"/>
|
||||||
|
<xs:element name="runCommandWithArgs" type="tns:runCommandWithArgs"/>
|
||||||
|
<xs:element name="runCommandWithArgsResponse" type="tns:runCommandWithArgsResponse"/>
|
||||||
|
<xs:element name="runCommandWithSSH" type="tns:runCommandWithSSH"/>
|
||||||
|
<xs:element name="runCommandWithSSHKeyAuth" type="tns:runCommandWithSSHKeyAuth"/>
|
||||||
|
<xs:element name="runCommandWithSSHKeyAuthResponse" type="tns:runCommandWithSSHKeyAuthResponse"/>
|
||||||
|
<xs:element name="runCommandWithSSHResponse" type="tns:runCommandWithSSHResponse"/>
|
||||||
|
<xs:element name="runJavaScript" type="tns:runJavaScript"/>
|
||||||
|
<xs:element name="runJavaScriptResponse" type="tns:runJavaScriptResponse"/>
|
||||||
|
<xs:element name="telnet" type="tns:telnet"/>
|
||||||
|
<xs:element name="telnetResponse" type="tns:telnetResponse"/>
|
||||||
|
<xs:complexType name="runCommandWithSSHKeyAuth">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="host" type="tns:connection"/>
|
||||||
|
<xs:element minOccurs="0" name="keyfile" type="xs:string"/>
|
||||||
|
<xs:element minOccurs="0" name="command" type="xs:string"/>
|
||||||
|
<xs:element name="timeout" type="xs:long"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="connection">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="hostname" type="xs:string"/>
|
||||||
|
<xs:element name="port" type="xs:int"/>
|
||||||
|
<xs:element minOccurs="0" name="user" type="xs:string"/>
|
||||||
|
<xs:element minOccurs="0" name="password" type="xs:string"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="runCommandWithSSHKeyAuthResponse">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="return" type="tns:ReturnCodeType"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ReturnCodeType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="returnCode" type="xs:int"/>
|
||||||
|
<xs:element minOccurs="0" name="stdOut" type="xs:string"/>
|
||||||
|
<xs:element minOccurs="0" name="stdErr" type="xs:string"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="tns:antProperty"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="antProperty">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="name" type="xs:string"/>
|
||||||
|
<xs:element name="value" type="xs:string"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="runCommandWithSSH">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="host" type="tns:connection"/>
|
||||||
|
<xs:element minOccurs="0" name="command" type="xs:string"/>
|
||||||
|
<xs:element name="timeout" type="xs:long"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="runCommandWithSSHResponse">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="return" type="tns:ReturnCodeType"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="runJavaScript">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="script" type="xs:string"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="runJavaScriptResponse">
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="telnet">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="host" type="tns:connection"/>
|
||||||
|
<xs:element minOccurs="0" name="prompt" type="xs:string"/>
|
||||||
|
<xs:element minOccurs="0" name="command" type="xs:string"/>
|
||||||
|
<xs:element minOccurs="0" name="expect" type="xs:string"/>
|
||||||
|
<xs:element name="timeout" type="xs:long"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="telnetResponse">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="return" type="tns:ReturnCodeType"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="runCommandWithArgs">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="executable" type="xs:string"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="arg" type="xs:string"/>
|
||||||
|
<xs:element name="timeout" type="xs:long"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="runCommandWithArgsResponse">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="return" type="tns:ReturnCodeType"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="rExec">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="host" type="tns:connection"/>
|
||||||
|
<xs:element minOccurs="0" name="command" type="xs:string"/>
|
||||||
|
<xs:element name="timeout" type="xs:long"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="rExecResponse">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="return" type="tns:ReturnCodeType"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="runCommandAsync">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="executable" type="xs:string"/>
|
||||||
|
<xs:element minOccurs="0" name="argline" type="xs:string"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="runCommandAsyncResponse">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="return" type="tns:ReturnCodeType"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="runCommand">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="executable" type="xs:string"/>
|
||||||
|
<xs:element minOccurs="0" name="argline" type="xs:string"/>
|
||||||
|
<xs:element name="timeout" type="xs:long"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="runCommandResponse">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="return" type="tns:ReturnCodeType"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="runCommandAsyncWithArgs">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="executable" type="xs:string"/>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="arg" type="xs:string"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="runCommandAsyncWithArgsResponse">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="return" type="tns:ReturnCodeType"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="XServicesFault">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="faultstring" nillable="true" type="xs:string"/>
|
||||||
|
<xs:element name="username" nillable="true" type="xs:string"/>
|
||||||
|
<xs:element name="homedir" nillable="true" type="xs:string"/>
|
||||||
|
<xs:element name="timestamp" nillable="true" type="xs:anySimpleType"/>
|
||||||
|
<xs:element name="jvmruntime" nillable="true" type="xs:string"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:element name="XServicesFault" type="tns:XServicesFault"/>
|
||||||
|
</xs:schema>
|
||||||
|
</wsdl:types>
|
||||||
|
<wsdl:message name="runCommandAsyncWithArgs">
|
||||||
|
<wsdl:part element="tns:runCommandAsyncWithArgs" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="runCommandWithSSHKeyAuth">
|
||||||
|
<wsdl:part element="tns:runCommandWithSSHKeyAuth" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="runCommandWithSSHKeyAuthResponse">
|
||||||
|
<wsdl:part element="tns:runCommandWithSSHKeyAuthResponse" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="runCommandWithArgsResponse">
|
||||||
|
<wsdl:part element="tns:runCommandWithArgsResponse" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="rExec">
|
||||||
|
<wsdl:part element="tns:rExec" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="runCommandAsync">
|
||||||
|
<wsdl:part element="tns:runCommandAsync" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="XServicesFault">
|
||||||
|
<wsdl:part element="tns:XServicesFault" name="XServicesFault"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="runJavaScript">
|
||||||
|
<wsdl:part element="tns:runJavaScript" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="runCommandAsyncResponse">
|
||||||
|
<wsdl:part element="tns:runCommandAsyncResponse" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="runCommandWithSSH">
|
||||||
|
<wsdl:part element="tns:runCommandWithSSH" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="runCommandAsyncWithArgsResponse">
|
||||||
|
<wsdl:part element="tns:runCommandAsyncWithArgsResponse" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="runCommand">
|
||||||
|
<wsdl:part element="tns:runCommand" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="telnet">
|
||||||
|
<wsdl:part element="tns:telnet" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="rExecResponse">
|
||||||
|
<wsdl:part element="tns:rExecResponse" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="runCommandWithArgs">
|
||||||
|
<wsdl:part element="tns:runCommandWithArgs" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="runCommandResponse">
|
||||||
|
<wsdl:part element="tns:runCommandResponse" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="runCommandWithSSHResponse">
|
||||||
|
<wsdl:part element="tns:runCommandWithSSHResponse" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="runJavaScriptResponse">
|
||||||
|
<wsdl:part element="tns:runJavaScriptResponse" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="telnetResponse">
|
||||||
|
<wsdl:part element="tns:telnetResponse" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:portType name="ExecuteService">
|
||||||
|
<wsdl:operation name="runCommandWithSSHKeyAuth">
|
||||||
|
<wsdl:input message="tns:runCommandWithSSHKeyAuth" name="runCommandWithSSHKeyAuth"></wsdl:input>
|
||||||
|
<wsdl:output message="tns:runCommandWithSSHKeyAuthResponse" name="runCommandWithSSHKeyAuthResponse"></wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="runCommandWithSSH">
|
||||||
|
<wsdl:input message="tns:runCommandWithSSH" name="runCommandWithSSH"></wsdl:input>
|
||||||
|
<wsdl:output message="tns:runCommandWithSSHResponse" name="runCommandWithSSHResponse"></wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="runJavaScript">
|
||||||
|
<wsdl:input message="tns:runJavaScript" name="runJavaScript"></wsdl:input>
|
||||||
|
<wsdl:output message="tns:runJavaScriptResponse" name="runJavaScriptResponse"></wsdl:output>
|
||||||
|
<wsdl:fault message="tns:XServicesFault" name="XServicesFault"></wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="telnet">
|
||||||
|
<wsdl:input message="tns:telnet" name="telnet"></wsdl:input>
|
||||||
|
<wsdl:output message="tns:telnetResponse" name="telnetResponse"></wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="runCommandWithArgs">
|
||||||
|
<wsdl:input message="tns:runCommandWithArgs" name="runCommandWithArgs"></wsdl:input>
|
||||||
|
<wsdl:output message="tns:runCommandWithArgsResponse" name="runCommandWithArgsResponse"></wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="rExec">
|
||||||
|
<wsdl:input message="tns:rExec" name="rExec"></wsdl:input>
|
||||||
|
<wsdl:output message="tns:rExecResponse" name="rExecResponse"></wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="runCommandAsync">
|
||||||
|
<wsdl:input message="tns:runCommandAsync" name="runCommandAsync"></wsdl:input>
|
||||||
|
<wsdl:output message="tns:runCommandAsyncResponse" name="runCommandAsyncResponse"></wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="runCommand">
|
||||||
|
<wsdl:input message="tns:runCommand" name="runCommand"></wsdl:input>
|
||||||
|
<wsdl:output message="tns:runCommandResponse" name="runCommandResponse"></wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="runCommandAsyncWithArgs">
|
||||||
|
<wsdl:input message="tns:runCommandAsyncWithArgs" name="runCommandAsyncWithArgs"></wsdl:input>
|
||||||
|
<wsdl:output message="tns:runCommandAsyncWithArgsResponse" name="runCommandAsyncWithArgsResponse"></wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
<wsdl:binding name="ExecuteServiceSoapBinding" type="tns:ExecuteService">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="runCommandWithSSHKeyAuth">
|
||||||
|
<soap:operation soapAction="" style="document"/>
|
||||||
|
<wsdl:input name="runCommandWithSSHKeyAuth">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="runCommandWithSSHKeyAuthResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="runCommandWithSSH">
|
||||||
|
<soap:operation soapAction="" style="document"/>
|
||||||
|
<wsdl:input name="runCommandWithSSH">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="runCommandWithSSHResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="runJavaScript">
|
||||||
|
<soap:operation soapAction="" style="document"/>
|
||||||
|
<wsdl:input name="runJavaScript">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="runJavaScriptResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="XServicesFault">
|
||||||
|
<soap:fault name="XServicesFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="telnet">
|
||||||
|
<soap:operation soapAction="" style="document"/>
|
||||||
|
<wsdl:input name="telnet">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="telnetResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="rExec">
|
||||||
|
<soap:operation soapAction="" style="document"/>
|
||||||
|
<wsdl:input name="rExec">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="rExecResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="runCommandWithArgs">
|
||||||
|
<soap:operation soapAction="" style="document"/>
|
||||||
|
<wsdl:input name="runCommandWithArgs">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="runCommandWithArgsResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="runCommandAsync">
|
||||||
|
<soap:operation soapAction="" style="document"/>
|
||||||
|
<wsdl:input name="runCommandAsync">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="runCommandAsyncResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="runCommand">
|
||||||
|
<soap:operation soapAction="" style="document"/>
|
||||||
|
<wsdl:input name="runCommand">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="runCommandResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="runCommandAsyncWithArgs">
|
||||||
|
<soap:operation soapAction="" style="document"/>
|
||||||
|
<wsdl:input name="runCommandAsyncWithArgs">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="runCommandAsyncWithArgsResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
<wsdl:service name="ExecuteService">
|
||||||
|
<wsdl:port binding="tns:ExecuteServiceSoapBinding" name="ExecuteServiceImplPort">
|
||||||
|
<soap:address location="http://localhost:8080/XServices/ExecuteService"/>
|
||||||
|
</wsdl:port>
|
||||||
|
</wsdl:service>
|
||||||
|
</wsdl:definitions>]]></con:content><con:type>http://schemas.xmlsoap.org/wsdl/</con:type></con:part></con:definitionCache><con:endpoints><con:endpoint>http://localhost:8080/XServices/ExecuteService</con:endpoint></con:endpoints><con:operation isOneWay="false" action="" name="rExec" bindingOperationName="rExec" type="Request-Response" outputName="rExecResponse" inputName="rExec" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/ExecuteService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
|
||||||
|
<soapenv:Header/>
|
||||||
|
<soapenv:Body>
|
||||||
|
<ws:rExec>
|
||||||
|
<!--Optional:-->
|
||||||
|
<host>
|
||||||
|
<hostname>?</hostname>
|
||||||
|
<port>?</port>
|
||||||
|
<!--Optional:-->
|
||||||
|
<user>?</user>
|
||||||
|
<!--Optional:-->
|
||||||
|
<password>?</password>
|
||||||
|
</host>
|
||||||
|
<!--Optional:-->
|
||||||
|
<command>?</command>
|
||||||
|
<timeout>?</timeout>
|
||||||
|
</ws:rExec>
|
||||||
|
</soapenv:Body>
|
||||||
|
</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/ExecuteService/rExec"/></con:call></con:operation><con:operation isOneWay="false" action="" name="runCommand" bindingOperationName="runCommand" type="Request-Response" outputName="runCommandResponse" inputName="runCommand" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/ExecuteService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
|
||||||
|
<soapenv:Header/>
|
||||||
|
<soapenv:Body>
|
||||||
|
<ws:runCommand>
|
||||||
|
<!--Optional:-->
|
||||||
|
<executable>?</executable>
|
||||||
|
<!--Optional:-->
|
||||||
|
<argline>?</argline>
|
||||||
|
<timeout>?</timeout>
|
||||||
|
</ws:runCommand>
|
||||||
|
</soapenv:Body>
|
||||||
|
</soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/ExecuteService/runCommand"/><con:wsrmConfig version="1.2"/></con:call></con:operation><con:operation isOneWay="false" action="" name="runCommandAsync" bindingOperationName="runCommandAsync" type="Request-Response" outputName="runCommandAsyncResponse" inputName="runCommandAsync" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/ExecuteService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
|
||||||
|
<soapenv:Header/>
|
||||||
|
<soapenv:Body>
|
||||||
|
<ws:runCommandAsync>
|
||||||
|
<!--Optional:-->
|
||||||
|
<executable>?</executable>
|
||||||
|
<!--Optional:-->
|
||||||
|
<argline>?</argline>
|
||||||
|
</ws:runCommandAsync>
|
||||||
|
</soapenv:Body>
|
||||||
|
</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/ExecuteService/runCommandAsync"/></con:call></con:operation><con:operation isOneWay="false" action="" name="runCommandAsyncWithArgs" bindingOperationName="runCommandAsyncWithArgs" type="Request-Response" outputName="runCommandAsyncWithArgsResponse" inputName="runCommandAsyncWithArgs" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/ExecuteService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
|
||||||
|
<soapenv:Header/>
|
||||||
|
<soapenv:Body>
|
||||||
|
<ws:runCommandAsyncWithArgs>
|
||||||
|
<!--Optional:-->
|
||||||
|
<executable>?</executable>
|
||||||
|
<!--Zero or more repetitions:-->
|
||||||
|
<arg>?</arg>
|
||||||
|
</ws:runCommandAsyncWithArgs>
|
||||||
|
</soapenv:Body>
|
||||||
|
</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/ExecuteService/runCommandAsyncWithArgs"/></con:call></con:operation><con:operation isOneWay="false" action="" name="runCommandWithArgs" bindingOperationName="runCommandWithArgs" type="Request-Response" outputName="runCommandWithArgsResponse" inputName="runCommandWithArgs" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/ExecuteService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
|
||||||
|
<soapenv:Header/>
|
||||||
|
<soapenv:Body>
|
||||||
|
<ws:runCommandWithArgs>
|
||||||
|
<!--Optional:-->
|
||||||
|
<executable>?</executable>
|
||||||
|
<!--Zero or more repetitions:-->
|
||||||
|
<arg>?</arg>
|
||||||
|
<timeout>?</timeout>
|
||||||
|
</ws:runCommandWithArgs>
|
||||||
|
</soapenv:Body>
|
||||||
|
</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/ExecuteService/runCommandWithArgs"/></con:call></con:operation><con:operation isOneWay="false" action="" name="runCommandWithSSH" bindingOperationName="runCommandWithSSH" type="Request-Response" outputName="runCommandWithSSHResponse" inputName="runCommandWithSSH" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/ExecuteService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
|
||||||
|
<soapenv:Header/>
|
||||||
|
<soapenv:Body>
|
||||||
|
<ws:runCommandWithSSH>
|
||||||
|
<!--Optional:-->
|
||||||
|
<host>
|
||||||
|
<hostname>?</hostname>
|
||||||
|
<port>?</port>
|
||||||
|
<!--Optional:-->
|
||||||
|
<user>?</user>
|
||||||
|
<!--Optional:-->
|
||||||
|
<password>?</password>
|
||||||
|
</host>
|
||||||
|
<!--Optional:-->
|
||||||
|
<command>?</command>
|
||||||
|
<timeout>?</timeout>
|
||||||
|
</ws:runCommandWithSSH>
|
||||||
|
</soapenv:Body>
|
||||||
|
</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/ExecuteService/runCommandWithSSH"/></con:call></con:operation><con:operation isOneWay="false" action="" name="runCommandWithSSHKeyAuth" bindingOperationName="runCommandWithSSHKeyAuth" type="Request-Response" outputName="runCommandWithSSHKeyAuthResponse" inputName="runCommandWithSSHKeyAuth" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/ExecuteService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
|
||||||
|
<soapenv:Header/>
|
||||||
|
<soapenv:Body>
|
||||||
|
<ws:runCommandWithSSHKeyAuth>
|
||||||
|
<!--Optional:-->
|
||||||
|
<host>
|
||||||
|
<hostname>?</hostname>
|
||||||
|
<port>?</port>
|
||||||
|
<!--Optional:-->
|
||||||
|
<user>?</user>
|
||||||
|
<!--Optional:-->
|
||||||
|
<password>?</password>
|
||||||
|
</host>
|
||||||
|
<!--Optional:-->
|
||||||
|
<keyfile>?</keyfile>
|
||||||
|
<!--Optional:-->
|
||||||
|
<command>?</command>
|
||||||
|
<timeout>?</timeout>
|
||||||
|
</ws:runCommandWithSSHKeyAuth>
|
||||||
|
</soapenv:Body>
|
||||||
|
</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/ExecuteService/runCommandWithSSHKeyAuth"/></con:call></con:operation><con:operation isOneWay="false" action="" name="runJavaScript" bindingOperationName="runJavaScript" type="Request-Response" outputName="runJavaScriptResponse" inputName="runJavaScript" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/ExecuteService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
|
||||||
|
<soapenv:Header/>
|
||||||
|
<soapenv:Body>
|
||||||
|
<ws:runJavaScript>
|
||||||
|
<!--Optional:-->
|
||||||
|
<script><![CDATA[
|
||||||
|
// Equivalent in effect to the Java declaration import java.io.*;
|
||||||
|
|
||||||
|
var bla = JavaImporter(Packages.java.util);
|
||||||
|
var blub = JavaImporter(Packages.java.lang);
|
||||||
|
with(blub) {
|
||||||
|
System.out.println("Mein out: ");
|
||||||
|
}
|
||||||
|
|
||||||
|
]]]]>><![CDATA[</script>
|
||||||
|
</ws:runJavaScript>
|
||||||
|
</soapenv:Body>
|
||||||
|
</soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/ExecuteService/runJavaScript"/><con:wsrmConfig version="1.2"/></con:call></con:operation><con:operation isOneWay="false" action="" name="telnet" bindingOperationName="telnet" type="Request-Response" outputName="telnetResponse" inputName="telnet" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/ExecuteService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
|
||||||
<soapenv:Header/>
|
<soapenv:Header/>
|
||||||
<soapenv:Body>
|
<soapenv:Body>
|
||||||
<ws:telnet>
|
<ws:telnet>
|
||||||
<!--Optional:-->
|
<!--Optional:-->
|
||||||
<host>
|
<host>
|
||||||
<hostname>localhost</hostname>
|
<hostname>?</hostname>
|
||||||
<port>23</port>
|
<port>?</port>
|
||||||
<!--Optional:-->
|
<!--Optional:-->
|
||||||
<user>brosenberger</user>
|
<user>?</user>
|
||||||
<!--Optional:-->
|
<!--Optional:-->
|
||||||
<password/>
|
<password>?</password>
|
||||||
</host>
|
</host>
|
||||||
<prompt>C:\Users\brosenberger></prompt>
|
<!--Optional:-->
|
||||||
<command>dir c:\</command>
|
<prompt>?</prompt>
|
||||||
<expect>enberger></expect>
|
<!--Optional:-->
|
||||||
<timeout>30000</timeout>
|
<command>?</command>
|
||||||
|
<!--Optional:-->
|
||||||
|
<expect>?</expect>
|
||||||
|
<timeout>?</timeout>
|
||||||
</ws:telnet>
|
</ws:telnet>
|
||||||
</soapenv:Body>
|
</soapenv:Body>
|
||||||
</soapenv:Envelope>
|
</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/ExecuteService/telnet"/></con:call></con:operation></con:interface><con:properties/><con:wssContainer/></con:soapui-project>
|
|
@ -0,0 +1,232 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<con:soapui-project name="JobServices" resourceRoot="" soapui-version="3.6.1" abortOnError="false" runType="SEQUENTIAL" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:interface xsi:type="con:WsdlInterface" wsaVersion="NONE" name="JobServiceSoapBinding" type="wsdl" bindingName="{http://ws.xservices.brutex.net}JobServiceSoapBinding" soapVersion="1_1" anonymous="optional" definition="http://localhost:8080/XServices/JobServices?wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="http://localhost:8080/XServices/JobServices?wsdl"><con:part><con:url>http://localhost:8080/XServices/JobServices?wsdl</con:url><con:content><![CDATA[<wsdl:definitions name="JobService" targetNamespace="http://ws.xservices.brutex.net" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.xservices.brutex.net" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<wsdl:types>
|
||||||
|
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://ws.xservices.brutex.net" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<xs:element name="deleteJob" type="tns:deleteJob"/>
|
||||||
|
<xs:element name="deleteJobResponse" type="tns:deleteJobResponse"/>
|
||||||
|
<xs:element name="getJob" type="tns:getJob"/>
|
||||||
|
<xs:element name="getJobResponse" type="tns:getJobResponse"/>
|
||||||
|
<xs:element name="getJobs" type="tns:getJobs"/>
|
||||||
|
<xs:element name="getJobsResponse" type="tns:getJobsResponse"/>
|
||||||
|
<xs:element name="scheduleJob" type="tns:scheduleJob"/>
|
||||||
|
<xs:element name="scheduleJobResponse" type="tns:scheduleJobResponse"/>
|
||||||
|
<xs:complexType name="getJobs">
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="getJobsResponse">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="return" type="tns:scheduledJob"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="scheduledJob">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="name" type="xs:string"/>
|
||||||
|
<xs:element minOccurs="0" name="description" type="xs:string"/>
|
||||||
|
<xs:element name="datetime" type="xs:dateTime"/>
|
||||||
|
<xs:element minOccurs="0" name="script" type="xs:string"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="getJob">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="id" type="xs:string"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="getJobResponse">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="return" type="tns:scheduledJob"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="deleteJob">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="id" type="xs:string"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="deleteJobResponse">
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="scheduleJob">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="job" type="tns:scheduledJob"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="scheduleJobResponse">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element minOccurs="0" name="return" type="xs:string"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="XServicesFault">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="faultstring" nillable="true" type="xs:string"/>
|
||||||
|
<xs:element name="username" nillable="true" type="xs:string"/>
|
||||||
|
<xs:element name="homedir" nillable="true" type="xs:string"/>
|
||||||
|
<xs:element name="timestamp" nillable="true" type="xs:anySimpleType"/>
|
||||||
|
<xs:element name="jvmruntime" nillable="true" type="xs:string"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:element name="XServicesFault" type="tns:XServicesFault"/>
|
||||||
|
</xs:schema>
|
||||||
|
</wsdl:types>
|
||||||
|
<wsdl:message name="scheduleJob">
|
||||||
|
<wsdl:part element="tns:scheduleJob" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="getJobResponse">
|
||||||
|
<wsdl:part element="tns:getJobResponse" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="deleteJob">
|
||||||
|
<wsdl:part element="tns:deleteJob" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="getJob">
|
||||||
|
<wsdl:part element="tns:getJob" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="getJobs">
|
||||||
|
<wsdl:part element="tns:getJobs" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="getJobsResponse">
|
||||||
|
<wsdl:part element="tns:getJobsResponse" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="scheduleJobResponse">
|
||||||
|
<wsdl:part element="tns:scheduleJobResponse" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="deleteJobResponse">
|
||||||
|
<wsdl:part element="tns:deleteJobResponse" name="parameters"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="XServicesFault">
|
||||||
|
<wsdl:part element="tns:XServicesFault" name="XServicesFault"></wsdl:part>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:portType name="JobService">
|
||||||
|
<wsdl:operation name="getJobs">
|
||||||
|
<wsdl:documentation>Get list of scheduled jobs</wsdl:documentation>
|
||||||
|
<wsdl:input message="tns:getJobs" name="getJobs"></wsdl:input>
|
||||||
|
<wsdl:output message="tns:getJobsResponse" name="getJobsResponse"></wsdl:output>
|
||||||
|
<wsdl:fault message="tns:XServicesFault" name="XServicesFault"></wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="getJob">
|
||||||
|
<wsdl:documentation>Get a job by id</wsdl:documentation>
|
||||||
|
<wsdl:input message="tns:getJob" name="getJob"></wsdl:input>
|
||||||
|
<wsdl:output message="tns:getJobResponse" name="getJobResponse"></wsdl:output>
|
||||||
|
<wsdl:fault message="tns:XServicesFault" name="XServicesFault"></wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="deleteJob">
|
||||||
|
<wsdl:documentation>Delete a scheduled job.</wsdl:documentation>
|
||||||
|
<wsdl:input message="tns:deleteJob" name="deleteJob"></wsdl:input>
|
||||||
|
<wsdl:output message="tns:deleteJobResponse" name="deleteJobResponse"></wsdl:output>
|
||||||
|
<wsdl:fault message="tns:XServicesFault" name="XServicesFault"></wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="scheduleJob">
|
||||||
|
<wsdl:documentation>Schedule a job</wsdl:documentation>
|
||||||
|
<wsdl:input message="tns:scheduleJob" name="scheduleJob"></wsdl:input>
|
||||||
|
<wsdl:output message="tns:scheduleJobResponse" name="scheduleJobResponse"></wsdl:output>
|
||||||
|
<wsdl:fault message="tns:XServicesFault" name="XServicesFault"></wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
<wsdl:binding name="JobServiceSoapBinding" type="tns:JobService">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="getJobs">
|
||||||
|
<soap:operation soapAction="" style="document"/>
|
||||||
|
<wsdl:input name="getJobs">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="getJobsResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="XServicesFault">
|
||||||
|
<soap:fault name="XServicesFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="getJob">
|
||||||
|
<soap:operation soapAction="" style="document"/>
|
||||||
|
<wsdl:input name="getJob">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="getJobResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="XServicesFault">
|
||||||
|
<soap:fault name="XServicesFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="deleteJob">
|
||||||
|
<soap:operation soapAction="" style="document"/>
|
||||||
|
<wsdl:input name="deleteJob">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="deleteJobResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="XServicesFault">
|
||||||
|
<soap:fault name="XServicesFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="scheduleJob">
|
||||||
|
<soap:operation soapAction="" style="document"/>
|
||||||
|
<wsdl:input name="scheduleJob">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="scheduleJobResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="XServicesFault">
|
||||||
|
<soap:fault name="XServicesFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
<wsdl:service name="JobService">
|
||||||
|
<wsdl:port binding="tns:JobServiceSoapBinding" name="JobServiceImplPort">
|
||||||
|
<soap:address location="http://localhost:8080/XServices/JobServices"/>
|
||||||
|
</wsdl:port>
|
||||||
|
</wsdl:service>
|
||||||
|
</wsdl:definitions>]]></con:content><con:type>http://schemas.xmlsoap.org/wsdl/</con:type></con:part></con:definitionCache><con:endpoints><con:endpoint>http://localhost:8080/XServices/JobServices</con:endpoint></con:endpoints><con:operation isOneWay="false" action="" name="getJobs" bindingOperationName="getJobs" type="Request-Response" outputName="getJobsResponse" inputName="getJobs" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/JobServices</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
|
||||||
|
<soapenv:Header/>
|
||||||
|
<soapenv:Body>
|
||||||
|
<ws:getJobs/>
|
||||||
|
</soapenv:Body>
|
||||||
|
</soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/JobService/getJobs"/><con:wsrmConfig version="1.2"/></con:call></con:operation><con:operation isOneWay="false" action="" name="getJob" bindingOperationName="getJob" type="Request-Response" outputName="getJobResponse" inputName="getJob" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/JobServices</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
|
||||||
|
<soapenv:Header/>
|
||||||
|
<soapenv:Body>
|
||||||
|
<ws:getJob>
|
||||||
|
<id>6b3da1f0-ff1c-4422-b2ce-17a6d1c2a990</id>
|
||||||
|
</ws:getJob>
|
||||||
|
</soapenv:Body>
|
||||||
|
</soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/JobService/getJob"/><con:wsrmConfig version="1.2"/></con:call></con:operation><con:operation isOneWay="false" action="" name="scheduleJob" bindingOperationName="scheduleJob" type="Request-Response" outputName="scheduleJobResponse" inputName="scheduleJob" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/JobServices</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
|
||||||
|
<soapenv:Header/>
|
||||||
|
<soapenv:Body>
|
||||||
|
<ws:scheduleJob>
|
||||||
|
<job>
|
||||||
|
<name></name>
|
||||||
|
<datetime>2011-06-06T17:00:00+02:00</datetime>
|
||||||
|
<!--Optional:-->
|
||||||
|
<script><![CDATA[
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
|
||||||
|
vjava.lang.System.out.println("hm")
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
|
||||||
|
vvvv
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
v
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
java.lang.System.out.println("hm")
|
||||||
|
|
||||||
|
]]]]>><![CDATA[</script>
|
||||||
|
</job>
|
||||||
|
</ws:scheduleJob>
|
||||||
|
</soapenv:Body>
|
||||||
|
</soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/JobService/scheduleJob"/><con:wsrmConfig version="1.2"/></con:call></con:operation><con:operation isOneWay="false" action="" name="deleteJob" bindingOperationName="deleteJob" type="Request-Response" outputName="deleteJobResponse" inputName="deleteJob" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/JobServices</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
|
||||||
|
<soapenv:Header/>
|
||||||
|
<soapenv:Body>
|
||||||
|
<ws:deleteJob>
|
||||||
|
<id>6b3da1f0-ff1c-4422-b2ce-17a6d1c2a990</id>
|
||||||
|
</ws:deleteJob>
|
||||||
|
</soapenv:Body>
|
||||||
|
</soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/JobService/deleteJob"/><con:wsrmConfig version="1.2"/></con:call></con:operation></con:interface><con:properties/><con:wssContainer/></con:soapui-project>
|
|
@ -41,6 +41,10 @@
|
||||||
<jaxws:endpoint id="executeservice"
|
<jaxws:endpoint id="executeservice"
|
||||||
implementor="net.brutex.xservices.ws.impl.ExecuteServiceImpl" address="/ExecuteService" />
|
implementor="net.brutex.xservices.ws.impl.ExecuteServiceImpl" address="/ExecuteService" />
|
||||||
|
|
||||||
|
<jaxws:endpoint id="jobservice"
|
||||||
|
implementor="net.brutex.xservices.ws.impl.JobServiceImpl" address="/JobService" />
|
||||||
|
|
||||||
|
|
||||||
<jaxws:endpoint id="miscservice"
|
<jaxws:endpoint id="miscservice"
|
||||||
implementor="net.brutex.xservices.ws.impl.MiscServiceImpl" address="/MiscService" />
|
implementor="net.brutex.xservices.ws.impl.MiscServiceImpl" address="/MiscService" />
|
||||||
</beans>
|
</beans>
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
create table qrtz_blob_triggers(
|
||||||
|
sched_name varchar(120) not null,
|
||||||
|
trigger_name varchar(200) not null,
|
||||||
|
trigger_group varchar(200) not null,
|
||||||
|
blob_data blob,
|
||||||
|
primary key (sched_name,trigger_name,trigger_group),
|
||||||
|
foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group)
|
||||||
|
)
|
|
@ -0,0 +1,6 @@
|
||||||
|
create table qrtz_calendars(
|
||||||
|
sched_name varchar(120) not null,
|
||||||
|
calendar_name varchar(200) not null,
|
||||||
|
calendar blob not null,
|
||||||
|
primary key (sched_name,calendar_name)
|
||||||
|
)
|
|
@ -0,0 +1,9 @@
|
||||||
|
create table qrtz_cron_triggers(
|
||||||
|
sched_name varchar(120) not null,
|
||||||
|
trigger_name varchar(200) not null,
|
||||||
|
trigger_group varchar(200) not null,
|
||||||
|
cron_expression varchar(120) not null,
|
||||||
|
time_zone_id varchar(80),
|
||||||
|
primary key (sched_name,trigger_name,trigger_group),
|
||||||
|
foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group)
|
||||||
|
)
|
|
@ -0,0 +1,15 @@
|
||||||
|
create table qrtz_fired_triggers(
|
||||||
|
sched_name varchar(120) not null,
|
||||||
|
entry_id varchar(95) not null,
|
||||||
|
trigger_name varchar(200) not null,
|
||||||
|
trigger_group varchar(200) not null,
|
||||||
|
instance_name varchar(200) not null,
|
||||||
|
fired_time bigint not null,
|
||||||
|
priority integer not null,
|
||||||
|
state varchar(16) not null,
|
||||||
|
job_name varchar(200),
|
||||||
|
job_group varchar(200),
|
||||||
|
is_nonconcurrent varchar(5),
|
||||||
|
requests_recovery varchar(5),
|
||||||
|
primary key (sched_name,entry_id)
|
||||||
|
)
|
|
@ -0,0 +1,13 @@
|
||||||
|
create table qrtz_job_details (
|
||||||
|
sched_name varchar(120) not null,
|
||||||
|
job_name varchar(200) not null,
|
||||||
|
job_group varchar(200) not null,
|
||||||
|
description varchar(250) ,
|
||||||
|
job_class_name varchar(250) not null,
|
||||||
|
is_durable varchar(5) not null,
|
||||||
|
is_nonconcurrent varchar(5) not null,
|
||||||
|
is_update_data varchar(5) not null,
|
||||||
|
requests_recovery varchar(5) not null,
|
||||||
|
job_data blob,
|
||||||
|
primary key (sched_name,job_name,job_group)
|
||||||
|
)
|
|
@ -0,0 +1,6 @@
|
||||||
|
create table qrtz_locks
|
||||||
|
(
|
||||||
|
sched_name varchar(120) not null,
|
||||||
|
lock_name varchar(40) not null,
|
||||||
|
primary key (sched_name,lock_name)
|
||||||
|
)
|
|
@ -0,0 +1,6 @@
|
||||||
|
create table qrtz_paused_trigger_grps
|
||||||
|
(
|
||||||
|
sched_name varchar(120) not null,
|
||||||
|
trigger_group varchar(200) not null,
|
||||||
|
primary key (sched_name,trigger_group)
|
||||||
|
)
|
|
@ -0,0 +1,8 @@
|
||||||
|
create table qrtz_scheduler_state
|
||||||
|
(
|
||||||
|
sched_name varchar(120) not null,
|
||||||
|
instance_name varchar(200) not null,
|
||||||
|
last_checkin_time bigint not null,
|
||||||
|
checkin_interval bigint not null,
|
||||||
|
primary key (sched_name,instance_name)
|
||||||
|
)
|
|
@ -0,0 +1,10 @@
|
||||||
|
create table qrtz_simple_triggers(
|
||||||
|
sched_name varchar(120) not null,
|
||||||
|
trigger_name varchar(200) not null,
|
||||||
|
trigger_group varchar(200) not null,
|
||||||
|
repeat_count bigint not null,
|
||||||
|
repeat_interval bigint not null,
|
||||||
|
times_triggered bigint not null,
|
||||||
|
primary key (sched_name,trigger_name,trigger_group),
|
||||||
|
foreign key (sched_name,trigger_name,trigger_group) references qrtz_triggers(sched_name,trigger_name,trigger_group)
|
||||||
|
)
|
|
@ -0,0 +1,19 @@
|
||||||
|
CREATE TABLE qrtz_simprop_triggers (
|
||||||
|
sched_name varchar(120) not null,
|
||||||
|
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||||
|
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||||
|
STR_PROP_1 VARCHAR(512),
|
||||||
|
STR_PROP_2 VARCHAR(512),
|
||||||
|
STR_PROP_3 VARCHAR(512),
|
||||||
|
INT_PROP_1 INT,
|
||||||
|
INT_PROP_2 INT,
|
||||||
|
LONG_PROP_1 BIGINT,
|
||||||
|
LONG_PROP_2 BIGINT,
|
||||||
|
DEC_PROP_1 NUMERIC(13,4),
|
||||||
|
DEC_PROP_2 NUMERIC(13,4),
|
||||||
|
BOOL_PROP_1 varchar(5),
|
||||||
|
BOOL_PROP_2 varchar(5),
|
||||||
|
PRIMARY KEY (sched_name,TRIGGER_NAME,TRIGGER_GROUP),
|
||||||
|
FOREIGN KEY (sched_name,TRIGGER_NAME,TRIGGER_GROUP)
|
||||||
|
REFERENCES QRTZ_TRIGGERS(sched_name,TRIGGER_NAME,TRIGGER_GROUP)
|
||||||
|
)
|
|
@ -0,0 +1,20 @@
|
||||||
|
create table qrtz_triggers(
|
||||||
|
sched_name varchar(120) not null,
|
||||||
|
trigger_name varchar(200) not null,
|
||||||
|
trigger_group varchar(200) not null,
|
||||||
|
job_name varchar(200) not null,
|
||||||
|
job_group varchar(200) not null,
|
||||||
|
description varchar(250),
|
||||||
|
next_fire_time bigint,
|
||||||
|
prev_fire_time bigint,
|
||||||
|
priority integer,
|
||||||
|
trigger_state varchar(16) not null,
|
||||||
|
trigger_type varchar(8) not null,
|
||||||
|
start_time bigint not null,
|
||||||
|
end_time bigint,
|
||||||
|
calendar_name varchar(200),
|
||||||
|
misfire_instr smallint,
|
||||||
|
job_data blob,
|
||||||
|
primary key (sched_name,trigger_name,trigger_group),
|
||||||
|
foreign key (sched_name,job_name,job_group) references qrtz_job_details(sched_name,job_name,job_group)
|
||||||
|
)
|
|
@ -2,16 +2,51 @@
|
||||||
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
|
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
|
||||||
<context-param>
|
<context-param>
|
||||||
<param-name>contextConfigLocation</param-name>
|
<param-name>contextConfigLocation</param-name>
|
||||||
<param-value>WEB-INF/cxf-beans.xml</param-value>
|
<param-value>/WEB-INF/cxf-beans.xml</param-value>
|
||||||
</context-param>
|
</context-param>
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>quartz:config-file</param-name>
|
||||||
|
<param-value>quartz.properties</param-value>
|
||||||
|
</context-param>
|
||||||
|
<context-param>
|
||||||
|
<param-name>quartz:shutdown-on-unload</param-name>
|
||||||
|
<param-value>true</param-value>
|
||||||
|
</context-param>
|
||||||
|
<context-param>
|
||||||
|
<param-name>quartz:wait-on-shutdown</param-name>
|
||||||
|
<param-value>false</param-value>
|
||||||
|
</context-param>
|
||||||
|
<context-param>
|
||||||
|
<param-name>quartz:start-scheduler-on-load</param-name>
|
||||||
|
<param-value>true</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
<listener>
|
<listener>
|
||||||
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
|
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
|
||||||
</listener>
|
</listener>
|
||||||
|
<listener>
|
||||||
|
<listener-class>
|
||||||
|
org.quartz.ee.servlet.QuartzInitializerListener
|
||||||
|
</listener-class>
|
||||||
|
</listener>
|
||||||
<servlet>
|
<servlet>
|
||||||
<servlet-name>XServices</servlet-name>
|
<servlet-name>XServices</servlet-name>
|
||||||
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
|
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
|
||||||
<load-on-startup>1</load-on-startup>
|
<load-on-startup>1</load-on-startup>
|
||||||
</servlet>
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>QuartzInitializer</servlet-name>
|
||||||
|
<servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
|
||||||
|
<param-name>shutdown-on-unload</param-name>
|
||||||
|
<param-value>true</param-value>
|
||||||
|
</init-param>
|
||||||
|
<load-on-startup>2</load-on-startup>
|
||||||
|
|
||||||
|
</servlet>
|
||||||
<servlet-mapping>
|
<servlet-mapping>
|
||||||
<servlet-name>XServices</servlet-name>
|
<servlet-name>XServices</servlet-name>
|
||||||
<url-pattern>/*</url-pattern>
|
<url-pattern>/*</url-pattern>
|
||||||
|
|
Loading…
Reference in New Issue