Configure a SOAScheduler for a composite in SOA Suite 11g. By Robert Baumgartner, Senior Solution Architect ORACLE



Similar documents
Creating Java EE Applications and Servlets with IntelliJ IDEA

Developing an EJB3 Application. on WebSphere 6.1. using RAD 7.5

Job Scheduling with Spring

Controlling Web Application Behavior

Web Application Programmer's Guide

Arjun V. Bala Page 20

DEVELOPING CONTRACT - DRIVEN WEB SERVICES USING JDEVELOPER. The purpose of this tutorial is to develop a java web service using a top-down approach.

Task Scheduling with Quartz

Building and Using Web Services With JDeveloper 11g

Web Applications. For live Java training, please see training courses at

Web Container Components Servlet JSP Tag Libraries

How To Understand The Architecture Of Java 2Ee, J2Ee, And J2E (Java) In A Wordpress Blog Post

Oracle Hyperion Financial Management Custom Pages Development Guide

OSWorkflow. A guide for Java developers and architects to integrating open-source Business Process Management products

Background Tasks and Blackboard Building Blocks TM. Two great tastes that taste great together

Java EE Introduction, Content. Component Architecture: Why and How Java EE: Enterprise Java

Module 13 Implementing Java EE Web Services with JAX-WS

WebSphere and Message Driven Beans

Oracle Hyperion Financial Management Developer and Customization Guide

Getting Started with Quartz Scheduler. Version 2.2.1

Penetration from application down to OS

Software Design Document Securing Web Service with Proxy

Servlet and JSP Filters

keyon true-xtender Luna SA Monitor Service Manual Release Version Autor Date Keyon January 2016 Release with Luna SA 6 support

Aspects of using Hibernate with CaptainCasa Enterprise Client

Using the Monitoring and Report Viewer Web Services

Monitoring Oracle Enterprise Performance Management System Release Deployments from Oracle Enterprise Manager 12c

Development. with NetBeans 5.0. A Quick Start in Basic Web and Struts Applications. Geertjan Wielenga

Manual. Programmer's Guide for Java API

Java Web Services SDK

Java Servlet Tutorial. Java Servlet Tutorial

CHAPTER 9: SERVLET AND JSP FILTERS

keyon Luna SA Monitor Service Administration Guide 1 P a g e Version Autor Date Comment

Workshop for WebLogic introduces new tools in support of Java EE 5.0 standards. The support for Java EE5 includes the following technologies:

Servlet 3.0. Alexis Moussine-Pouchkine. mercredi 13 avril 2011

Cello How-To Guide. Scheduler

Web Development in Java Live Demonstrations (Live demonstrations done using Eclipse for Java EE 4.3 and WildFly 8)

Implementing SQI via SOAP Web-Services

Query JD Edwards EnterpriseOne Customer Credit using Oracle BPEL Process Manager

Overview of Web Services API

Listeners. Formats. Free Form. Formatted

PA165 - Lab session - Web Presentation Layer

Tutorial c-treeace Web Service Using Java

Building Web Services with Apache Axis2

CS506 Web Design and Development Solved Online Quiz No. 01

Ch-03 Web Applications

Application. 1.1 About This Tutorial Tutorial Requirements Provided Files

JBoss SOAP Web Services User Guide. Version: M5

Java Web Programming. Student Workbook

TIBCO ActiveMatrix BPM Web Application Component Development. Software Release 2.0 November 2012

Quartz Scheduler 2.1.x Documentation

WIRIS quizzes web services Getting started with PHP and Java

T320 E-business technologies: foundations and practice

Connecting Custom Services to the YAWL Engine. Beta 7 Release

Piotr Nowicki's Homepage. Java EE 6 SCWCD Mock Exam. "Simplicity is the ultimate sophistication." Important!

KC Data Integration Web Service Developer Guide

Managing Data on the World Wide-Web

Oracle WebLogic Server 11g: Administration Essentials

Java Servlet 3.0. Rajiv Mordani Spec Lead

Struts 2 - Practical examples

API Document Webaroo Technology India Pvt. Ltd.

Chapter 22: Integrating Flex applications with portal servers

Quartz.Net Scheduler in Depth

Quartz Scheduler Configuration Guide. Version 2.2.1

Oracle Web Service Manager 11g Field level Encryption (in SOA, WLS) March, 2012

Implementing the Shop with EJB

Quartz Scheduler Developer Guide. Version 2.2.1

Oracle WebLogic Server

1.00 Lecture 1. Course information Course staff (TA, instructor names on syllabus/faq): 2 instructors, 4 TAs, 2 Lab TAs, graders

JSP. Common patterns

Web Service Development Using CXF. - Praveen Kumar Jayaram

COMPUTACIÓN ORIENTADA A SERVICIOS (PRÁCTICA) Dr. Mauricio Arroqui EXA-UNICEN

CHAPTER 10: WEB SERVICES

Configuring Apache HTTP Server as a Reverse Proxy Server for SAS 9.2 Web Applications Deployed on BEA WebLogic Server 9.2

Ehcache Web Cache User Guide. Version 2.9

SESM Tag Library. Configuring a Tag Library APPENDIX

5 Days Course on Oracle WebLogic Server 11g: Administration Essentials

Don t get it right, just get it written.

Oracle SOA Suite 11g Oracle SOA Suite 11g HL7 Inbound Example

Oracle Managed File Getting Started - Transfer FTP Server to File Table of Contents

Hosted VoIP Phone System. Admin Portal User Guide for. Call Center Administration

IBM Rational Rapid Developer Components & Web Services

ACI Commerce Gateway Hosted Payment Page Guide

Web Applications. Originals of Slides and Source Code for Examples:

SETTING UP YOUR JAVA DEVELOPER ENVIRONMENT

How to use Certificate in Microsoft Outlook

CONTROLLING WEB APPLICATION BEHAVIOR WITH

Data Domain Profiling and Data Masking for Hadoop

Creating Web Services Applications with IntelliJ IDEA

Getting Started Guide. Version 1.8

Grandstream XML Application Guide Three XML Applications

Ready, Set, Go Getting started with Tuscany

In this chapter the concept of Servlets, not the entire Servlet specification, is

Multiple vulnerabilities in Apache Foundation Struts 2 framework. Csaba Barta and László Tóth

In this chapter, we lay the foundation for all our further discussions. We start

ACM Crossroads Student Magazine The ACM's First Electronic Publication

Onset Computer Corporation

Work with XI 3.0 Java Proxies

Transcription:

Configure a SOAScheduler for a composite in SOA Suite 11g By Robert Baumgartner, Senior Solution Architect ORACLE November 2010 Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 1

Prerequisite Install the bpel-101-helloworld from https://soasamples.samplecode.oracle.com/ into your running Oracle SOA Suite 11g. This is our example SOA composite, which will be triggered by our Scheduler. This scheduler will also work with BPMN processes, if they are exposed as service within their SCA composite. Implementing SOAScheduler in JDeveloper In this section, we will create a simple a web service proxy component, a scheduler job class that is called by the SOAScheduler and a java class SOASchedulerServlet that initiate the quartz scheduler. Creating the Web Service Proxy Component At first we need the WSDL of the example SOA composite. This can be found at the Oracle Enterprise Manager. You will find the Oracle Enterprise Manager at http://server:port/em, e.g. http://localhost:7001/em. Log in with the administration user, e.g. weblogic. On the farm overview page click on the newly deployed SOA example composite bpel-101-helloworld Click on Show WSDL and endpoint URI. Figure 1 Figure 2 Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 2

Copy the WSDL location. Figure 3 To get started, create a new Application in JDeveloper by click CTRL-N, name it "SOAScheduler", select Generic Application... Figure 4 And create a new Project named "SchedulerProject", select Java and Web Services as Project Technologies. Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 3

Click "Finish". Figure 5 Create a new Web Service Proxy by click File/New or CRTL-N. Figure 6 Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 4

Click OK and Next. Select JAX-WS Style and click Next. Figure 7 Figure 8 Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 5

Paste the WSDL location into WSDL Document URL and click Next. Figure 9 Write sample.oracle.otn.soascheduler.proxy into Package Name and sample.oracle.otn.soascheduler.proxy.types into Root Package for Generated Types and click Finish. In the new HelloWorldProcess_ptClient.java add the Line System.out.println(helloWorldProcess.process("SOAScheduler")); public static void main(string [] args) { helloworldprocess_client_ep = new Helloworldprocess_client_ep(); HelloWorldProcess helloworldprocess = helloworldprocess_client_ep.gethelloworldprocess_pt(); // Add your code to call the desired methods. System.out.println(helloWorldProcess.process("SOAScheduler")); Click on F11 or on the run icon proxy.. The composite will be executed by the new generated service In the message window you will see the correct output of SOA example composite. Figure 10 Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 6

Add Quartz library to the project Click on Application Project Properties, Add JAR/Directory. Figure 11 Select in your JDeveloper home \jdeveloper\soa\modules\quartz-all-1.6.5.jar. Click Select. Figure 12 Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 7

Click OK. Creating the Scheduler Job Component Create a new Java Class in JDeveloper by click File/New or CRTL-N... Click OK. Figure 13 Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 8

Figure 14 Set the Name to HelloWorldJob and Package to sample.oracle.otn.soascheduler.job and click OK. Replace the generated source with the following lines. package sample.oracle.otn.soascheduler.job; import java.text.dateformat; import java.text.simpledateformat; import java.util.date; import sample.oracle.otn.soascheduler.proxy.helloworldprocess_client_ep; import sample.oracle.otn.soascheduler.proxy.helloworldprocess; import javax.xml.ws.webserviceref; import org.quartz.job; import org.quartz.jobexecutioncontext; public class HelloWorldJob implements Job{ @WebServiceRef private static Helloworldprocess_client_ep helloworldprocess_client; public HelloWorldJob() { helloworldprocess_client = new Helloworldprocess_client_ep(); Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 9

public void execute(jobexecutioncontext jobexecutioncontext) { DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date date = new Date(); System.out.println("HelloWorldJob started"); try { helloworldprocess_client = new Helloworldprocess_client_ep(); HelloWorldProcess helloworldprocess = helloworldprocess_client.gethelloworldprocess_pt(); // Add your code to call the desired methods. System.out.println("HelloWorld Response: " + helloworldprocess.process("soascheduler@" + df.format(date))); catch (Exception e) { System.out.println("HelloWorld Process failed: " + e.tostring()); e.printstacktrace(); Creating the SOASchedulerServlet java class Create a new Java Class in JDeveloper by click File/New or CRTL-N... Figure 15 Set the Name to SOASchedulerServlet, Package to sample.oracle.otn.soascheduler, Extends javax.servlet.http.httpservlet and click on OK. Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 10

Replace the generated source with the following lines. package sample.oracle.otn.soascheduler; import sample.oracle.otn.soascheduler.job.helloworldjob; import java.io.ioexception; import java.io.printwriter; import java.util.date; import java.util.calendar; import java.util.gregoriancalendar; import javax.servlet.servletconfig; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import org.quartz.crontrigger; import org.quartz.jobdetail; import org.quartz.scheduler; import org.quartz.simpletrigger; import org.quartz.trigger; import org.quartz.impl.stdschedulerfactory; import org.quartz.impl.calendar.annualcalendar; public class SOASchedulerServlet extends HttpServlet { StdSchedulerFactory schedfact; Scheduler sched; public void init(servletconfig config) throws ServletException { super.init(config); try { schedfact = new StdSchedulerFactory("soa_quartz.properties"); sched = schedfact.getscheduler(); System.out.println(this.getClass().getName() + " started"); /* // Add the holiday calendar to the schedule AnnualCalendar holidays = new AnnualCalendar(); // fourth of July (July 4) Calendar fourthofjuly = new GregorianCalendar(2011, 7, 4); holidays.setdayexcluded(fourthofjuly, true); // halloween (Oct 31) Calendar halloween = new GregorianCalendar(2011, 9, 31); holidays.setdayexcluded(halloween, true); // christmas (Dec 25) Calendar christmas = new GregorianCalendar(2011, 11, 25); holidays.setdayexcluded(christmas, true); */ // tell the schedule about our holiday calendar sched.addcalendar("holidays", holidays, false, false); sched.start(); Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 11

JobDetail jd = new JobDetail(JOB_NAME, GROUP_NAME, HelloWorldJob.class); CronTrigger crontrigger = new CronTrigger(TRIGGER_NAME, GROUP_NAME); String cronexpr = null; // Get the cron Expression as an Init parameter cronexpr = getinitparameter("cronexpr"); System.out.println(this.getClass().getName() + " Cron Expression for " + JOB_NAME + ":" + cronexpr); crontrigger.setcronexpression(cronexpr); System.out.println(this.getClass().getName() + " Scheduling Job " + JOB_NAME); sched.schedulejob(jd, crontrigger); System.out.println(this.getClass().getName() + " Job " + JOB_NAME + " scheduled."); catch (Exception e) { System.out.println(this.getClass().getName() + e.getlocalizedmessage()); e.printstacktrace(); public void destroy() { try { if (sched!= null) { sched.unschedulejob(trigger_name, JOB_NAME); sched.shutdown(); catch (Exception e) { System.out.println(this.getClass().getName() + " failed to shutdown: " + e.tostring()); e.printstacktrace(); System.out.println(this.getClass().getName() + " stopped"); public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter ajax = new PrintWriter(response.getOutputStream()); // logger.warning("get"); String action = request.getparameter("action"); if ("single".equals(action)) { if (sched!= null) { try { Trigger trigger = new SimpleTrigger("SOASingleTrigger", GROUP_NAME, new Date()); trigger.setjobname(job_name); trigger.setjobgroup(group_name); // Schedule the trigger sched.schedulejob(trigger); catch (Exception e) { System.out.println(this.getClass().getName() + e.getlocalizedmessage()); e.printstacktrace(); else if ("start".equals(action)) { if (sched!= null) { try { JobDetail jd = new JobDetail(JOB_NAME, GROUP_NAME, HelloWorldJob.class); CronTrigger crontrigger = new CronTrigger(TRIGGER_NAME, GROUP_NAME); Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 12

// Get the cron Expression as an Init parameter String cronexpr = getinitparameter("cronexpr"); System.out.println(this.getClass().getName() + " Cron Expression for " + JOB_NAME + ":" + cronexpr); crontrigger.setcronexpression(cronexpr); System.out.println(this.getClass().getName() + " Scheduling Job " + JOB_NAME); sched.schedulejob(jd, crontrigger); System.out.println(this.getClass().getName() + " Job " + JOB_NAME + " scheduled."); catch (Exception e) { System.out.println(this.getClass().getName() + e.getlocalizedmessage()); e.printstacktrace(); else if ("stop".equals(action)) { if (sched!= null) { try { sched.unschedulejob(trigger_name, GROUP_NAME); System.out.println(this.getClass().getName() + " stopped"); catch (Exception e) { System.out.println(this.getClass().getName() + " failed to shutdown: " + e.tostring()); e.printstacktrace(); ajax.println("<html>"); ajax.println(" <head>"); ajax.println(" <title>soascheduler - Web Interface</title>"); ajax.println(" <link rel=\"stylesheet\" type=\"text/css\" href=\"css/mystyle.css\"></link>"); ajax.println(" </head>"); ajax.println(" <body onload='startajaxperiodicalupdater()'>"); ajax.println(" <h2>"); ajax.println(" SOAScheduler @"); ajax.println(" <span class=\"server\">" + System.getProperty("weblogic.Name") + "</span>"); ajax.println(" </h2>"); ajax.println("<table id=\"events_table\" class=\"events_table\" width=\"100%\">"); ajax.println("<tbody>"); String[] jobgroups; String[] jobsingroup; String[] triggergroups; Trigger[] jobtriggers; String[] calenderslist; AnnualCalendar calen; CronTrigger crontrigger; int i, j, k; try { jobgroups = sched.getjobgroupnames(); triggergroups = sched.gettriggergroupnames(); calenderslist = sched.getcalendarnames(); for (i= 0; i < calenderslist.length; i++) { calen = (AnnualCalendar)sched.getCalendar(calendersList[i]); //System.out.println("Calendar: " + calenderslist[i]); ajax.printf("calendar: " + calenderslist[i]); Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 13

for (i = 0; i < jobgroups.length; i++) { // System.out.println("Group: " + jobgroups[i] + " contains the following jobs"); jobsingroup = sched.getjobnames(jobgroups[i]); for (j = 0; j < jobsingroup.length; j++) { // System.out.println("- " + jobsingroup[j]); jobtriggers = sched.gettriggersofjob(jobsingroup[j], jobgroups[i]); for (k = 0; k < jobtriggers.length; k++) { // System.out.println("- " + triggersingroup[j]); if ("org.quartz.crontrigger".equals(jobtriggers[k].getclass().getname())) { crontrigger = (CronTrigger)jobTriggers[k]; ajax.printf("<tr class=\"%s\"><td align=\"left\">trigger: %s</td><td>next: %s</td><td>last: %s</td><td>cron: %s</td></tr>", "events", jobtriggers[k].getname(), jobtriggers[k].getnextfiretime(), jobtriggers[k].getpreviousfiretime(), crontrigger.getcronexpression()); else { ajax.printf("<tr class=\"%s\"><td align=\"left\">trigger: %s</td><td>next: %s</td></tr>", "events", jobtriggers[k].getname(), jobtriggers[k].getnextfiretime()); catch (Exception e) { System.out.println("SOASchdulerServlet failed: " + e.tostring()); e.printstacktrace(); ajax.println("</tbody>"); ajax.println("</table>"); ajax.flush(); static final String GROUP_NAME = "SOAGroup"; static final String TRIGGER_NAME = "SOATrigger"; static final String JOB_NAME = "SOAJob"; static final String TARGET_PAGE = "index.jsp"; Create a quartz property file Create a new File (General) in JDeveloper by click File/New or CRTL-N... Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 14

Select File (General). Figure 16 Figure 17 Set File Name to soa_quartz.properties and Directory to the src directory of your project. Click OK. Insert the following lines into the property file. # # Configure Main Scheduler Properties # org.quartz.scheduler.instancename = SOASchedulerorg.quartz.scheduler.instanceId = AUTO org.quartz.scheduler.rmi.export = false org.quartz.scheduler.rmi.proxy = false # # Configure ThreadPool # Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 15

org.quartz.threadpool.class = org.quartz.simpl.simplethreadpool org.quartz.threadpool.threadcount = 5 org.quartz.threadpool.threadpriority = 4 # # Configure JobStore # org.quartz.jobstore.misfirethreshold = 5000 org.quartz.jobstore.class = org.quartz.simpl.ramjobstore Create a J2EE Deployment Descriptor (web.xml) Create a new web.xml in JDeveloper by click File/New or CRTL-N... Figure 18 Select Java EE Deployment Descriptor. Click OK. Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 16

Select web.xml. Click Next. Figure 19 Figure 20 Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 17

Select 2.5. Click Finish. Select Servlets and click on the green + (Create Servlet). Set Name to SOASchedulerServlet, Servlet Class to sample.oracle.otn.soascheduler.soaschedulerservlet. Set Load Servlet on to Application Start. Select Servlet Mappings and click on the green + (Create Servlet Mappings ). Add /soaschedulerservlet as URL Pattern. Select Initialization Parameters and click on the green + (Create Servlet Initialization parameters ). Add cronexpr as Name and 0 0,5,10,15,20,25,30,35,40,45,50,55 * * *? as Value. Figure 21 Select Pages and click on the green + (Create Welcome File ). Add /soaschedulerservlet. Figure 22 The Source should look like this <?xml version = '1.0' encoding = 'windows-1252'?> <web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/webapp_2_5.xsd" Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 18

version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"> <servlet> <servlet-name>soaschedulerservlet</servlet-name> <servlet-class>sample.oracle.otn.soascheduler.soaschedulerservlet</servlet-class> <init-param> <param-name>cronexpr</param-name> <param-value>0 0,5,10,15,20,25,30,35,40,45,50,55 * * *?</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>soaschedulerservlet</servlet-name> <url-pattern>/soaschedulerservlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/soaschedulerservlet</welcome-file> </welcome-file-list> </web-app> Click Save All. Attention: The name cronexpr is requested in the SOASchedulerServlet.java, and the value means, that the SOA composite bpel-101-helloworld is started every five minutes every day. For other values you will find more examples later. Create WAR File (Deployment Profile) Create a new WAR File in JDeveloper by click File/New or CRTL-N... Click OK. Figure 23 Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 19

Figure 24 Set the Profile Name to SOAScheduler. Click OK. Figure 25 On the General tab set the Web Context Root to SOAScheduler. Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 20

Figure 26 On the Filters subtub of WEB-INF/lib deselect quartz-all-1.6.5.jar, because it is already available on the WebLogic Server 10.3.1/2/3. Click OK. Click OK. Figure 27 Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 21

Deploy your application Right click on your Project, select Deploy and click on SOAScheduler. Figure 28 Figure 29 Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 22

Select Deploy to Application Server. Click Next. Figure 30 Select your Application Server, where the Oracle SOA Suite is installed. If you have not your application server already configured. Add a new connection with the green +. Click Next. Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 23

Select AdminServer. Click Finish. Figure 31 If deployment successful, the message window shows following: Figure 32 Test your SOAScheduler When the application SOAScheduler is deployed, the SOA composite bpel-101-helloworld is executed every 5 minutes. You will find this in the Oracle Enterprise Manager at http://server:port/em, e.g. http://localhost:7001/em Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 24

Figure 33 By click on one Instance ID you will get the details of the SOA compsite. Figure 34 Figure 35 You will find also some output in your server log file. Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 25

Advanced Configuration Calling the SOAScheduler Servlet and Starting/Stopping the SOAScheduler You can go to http://server:port/soascheduler/soaschedulerservlet and will see the next and the last run of the trigger, e.g. http://localhost:7001/soascheduler/soaschedulerservlet. This servlet has a parameter with the name action. Valid values are start, stop and single. start Start the SOAScheduler, if it has been previously stopped Stop Stop the SOAScheduler single Start the job immediately. Works only if the scheduler is running. e.g. http://localhost:7001/soascheduler/soaschedulerservlet?action=stop Business Calendar In the SOASchedulerServlet is an example how to add holidays to the calendar. If you want to use this feature you have to uncomment this coding and to add the correct date for your local holidays. /* // Add the holiday calendar to the schedule AnnualCalendar holidays = new AnnualCalendar(); // fourth of July (July 4) Calendar fourthofjuly = new GregorianCalendar(2011, 7, 4); holidays.setdayexcluded(fourthofjuly, true); // halloween (Oct 31) Calendar halloween = new GregorianCalendar(2011, 9, 31); holidays.setdayexcluded(halloween, true); // christmas (Dec 25) Calendar christmas = new GregorianCalendar(2011, 11, 25); holidays.setdayexcluded(christmas, true); */ // tell the schedule about our holiday calendar sched.addcalendar("holidays", holidays, false, false); SOAScheduler in a Cluster You can use this SOAScheuler in a cluster. Quartz the software used by the SOAScheduler - ships with well-proven clustering capabilities that offer scaling and high availability features. You can read about these features in the Quartz Configuration Reference. You will need to setup a JDBC-JobStore. See http://www.quartz-scheduler.org/docs/configuration/configjdbcjobstoreclustering.html Examples for cron expressions A cron expression is a string comprised of 6 or 7 fields separated by white space. Field Name Mandatory Allowed Values Allowed Special Characters Seconds YES 0-59, - * / Minutes YES 0-59, - * / Hours YES 0-23, - * / L W Day of month YES 1-31, - *? / L W Month YES 1-12 or JAN-DEC, - * / Day of week YES 1-7 or SUN-SAT, - *? / L # Year NO empty, 1970-2099, - * / Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 26

Examples for cron: Expression Meaning 0 0 12 * *? Fire at 12pm (noon) every day 0 15 10? * * Fire at 10:15am every day 0 15 10 * *? Fire at 10:15am every day 0 15 10 * *? * Fire at 10:15am every day 0 15 10 * *? 2005 Fire at 10:15am every day during the year 2005 0 * 14 * *? Fire every minute starting at 2pm and ending at 2:59pm, every day 0 0/5 14 * *? Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day 0 0/5 14,18 * *? Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day 0 0-5 14 * *? Fire every minute starting at 2pm and ending at 2:05pm, every day 0 10,44 14? 3 WED Fire at 2:10pm and at 2:44pm every Wednesday in the month of March 0 15 10? * MON-FRI Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday 0 15 10 15 *? Fire at 10:15am on the 15th day of every month 0 15 10 L *? Fire at 10:15am on the last day of every month 0 15 10? * 6L Fire at 10:15am on the last Friday of every month 0 15 10? * 6L Fire at 10:15am on the last Friday of every month 0 15 10? * 6L 2002-2005 Fire at 10:15am on every last Friday of every month during the years 2002 to 2005 0 15 10? * 6#3 Fire at 10:15am on the third Friday of every month 0 0 12 1/5 *? Fire at 12pm (noon) every 5 days every month, starting on the first day of the month 0 11 11 11 11? Fire every November 11th at 11:11am See http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html Tested with Oracle SOA Suite 11g(11.1.1.3). Scheduler for the Oracle SOA Suite 11g: SOAScheduler Page 27