From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../src/examples/timer/CleanDayLimitOrders.java | 13 +++++ .../examples/timer/CleanDayLimitOrdersBean.java | 67 ++++++++++++++++++++++ .../examples/timer/CleanDayLimitOrdersClient.java | 19 ++++++ .../examples/timer/META-INF/application-client.xml | 7 +++ .../src/examples/timer/META-INF/application.xml | 10 ++++ .../src/examples/timer/META-INF/ejb-jar.xml | 22 +++++++ .../Rima Examples/src/examples/timer/Readme.txt | 15 +++++ .../Rima Examples/src/examples/timer/build.xml | 29 ++++++++++ 8 files changed, 182 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/CleanDayLimitOrders.java create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/CleanDayLimitOrdersBean.java create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/CleanDayLimitOrdersClient.java create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/META-INF/application-client.xml create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/META-INF/application.xml create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/META-INF/ejb-jar.xml create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/Readme.txt create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/build.xml (limited to 'Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer') diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/CleanDayLimitOrders.java b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/CleanDayLimitOrders.java new file mode 100644 index 0000000..55df678 --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/CleanDayLimitOrders.java @@ -0,0 +1,13 @@ +package examples.timer; + +import javax.ejb.Remote; +import javax.ejb.Timer; + + +/** + * This is the business interface for CleanDayLimitOrders enterprise bean. + */ +@Remote +public interface CleanDayLimitOrders { + public void cleanPeriodicallyDayLimitOrders(); +} diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/CleanDayLimitOrdersBean.java b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/CleanDayLimitOrdersBean.java new file mode 100644 index 0000000..1f90550 --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/CleanDayLimitOrdersBean.java @@ -0,0 +1,67 @@ +package examples.timer; + +import javax.ejb.*; +import javax.annotation.Resource; + +import java.util.Calendar; +import java.util.TimeZone; +import java.util.SimpleTimeZone; +import java.util.GregorianCalendar; +import java.util.Date; + +@Stateless +public class CleanDayLimitOrdersBean implements CleanDayLimitOrders { + + @Resource private SessionContext ctx; + + public void cleanPeriodicallyDayLimitOrders() + { + // Get hold of the eastern time zone assuming that the securities are being + // traded on NYSE and NASDAQ exchanges. + String[] timezoneIDs = TimeZone.getAvailableIDs (-5 * 60 * 60 * 1000); + + SimpleTimeZone est = new SimpleTimeZone (-5 * 60 * 60 * 1000, timezoneIDs[0]); + + // Provide the rules for start and end days of daylight savings time. + est.setStartRule (Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000); + est.setEndRule (Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000); + + // Get hold of a calendar instance for the eastern time zone. + Calendar cal = new GregorianCalendar(est); + + // Set the calendar to the current time. + cal.setTime (new Date ()); + + // Calculate the difference between now and market close i.e. 4 PM Eastern. + int hourofday = cal.get (cal.HOUR_OF_DAY); + int minuteofhour = cal.get (cal.MINUTE); + + // If this method is invoked after the market close, then set the timer expiration + // immediately i.e. start=0. Otherwise, calculate the milliseconds that needs + // to elapse until first timer expiration. + long start = 0; + if (hourofday < 16) + { + int hourdiff = 16 - hourofday - 1; + int mindiff = 60 - minuteofhour; + + start = (hourdiff * 60 * 60 * 1000) + (mindiff * 60 * 1000); + } + + // Finally, get hold of the timer service instance from EJBContext object and create the + // recurrent expiration timer. + TimerService timerService = ctx.getTimerService(); + Timer timer = timerService.createTimer(start, 86400000, null); + + System.out.println("CleanDayLimitOrdersBean: Timer created to first expire after " + start + " milliseconds."); + } + + @Timeout + public void handleTimeout(Timer timer) + { + System.out.println("CleanDayLimitOrdersBean: handleTimeout called."); + + // Put here the code for cleaning the database of day limit orders that have + // not been executed. + } +} \ No newline at end of file diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/CleanDayLimitOrdersClient.java b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/CleanDayLimitOrdersClient.java new file mode 100644 index 0000000..749de86 --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/CleanDayLimitOrdersClient.java @@ -0,0 +1,19 @@ +package examples.timer; + +import javax.ejb.EJB; + +public class CleanDayLimitOrdersClient { + @EJB + private static CleanDayLimitOrders cleanDayLimitOrders; + + public static void main(String[] args) { + try { + cleanDayLimitOrders.cleanPeriodicallyDayLimitOrders(); + + System.out.println ("cleanPeriodicallyDayLimitOrders() returned successfully. Take a look at the application server log or console for messages from bean."); + } catch (Exception ex) { + System.err.println("Caught an unexpected exception!"); + ex.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/META-INF/application-client.xml b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/META-INF/application-client.xml new file mode 100644 index 0000000..7e232d8 --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/META-INF/application-client.xml @@ -0,0 +1,7 @@ + + + CleanDayLimitOrdersClient + diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/META-INF/application.xml b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/META-INF/application.xml new file mode 100644 index 0000000..8fc0433 --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/META-INF/application.xml @@ -0,0 +1,10 @@ + + + CleanDayLimitOrdersApp + + CleanDayLimitOrdersEjb.jar + + + CleanDayLimitOrdersClient.jar + + diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/META-INF/ejb-jar.xml b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/META-INF/ejb-jar.xml new file mode 100644 index 0000000..a358d5a --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/META-INF/ejb-jar.xml @@ -0,0 +1,22 @@ + + + + + CleanDayLimitOrdersBean + CleanDayLimitOrdersBean + examples.timer.CleanDayLimitOrders + examples.timer.CleanDayLimitOrdersBean + Stateless + + handleTimeout + + javax.ejb.Timer + + + Container + + + + + + \ No newline at end of file diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/Readme.txt b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/Readme.txt new file mode 100644 index 0000000..6e5d1aa --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/Readme.txt @@ -0,0 +1,15 @@ +1) asant jar + +2) asant app_clientjar_common + +3) asant create_ear_common_with_clientjar + +4) asant deploy_common + +5) Turn off the firewall right before running the client (for Glassfish) + +6) asant run_client_in_appcontainer + +5) asant undeploy_common + +6) asant clean_all \ No newline at end of file diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/build.xml b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/build.xml new file mode 100644 index 0000000..7030d4a --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Rima Examples/src/examples/timer/build.xml @@ -0,0 +1,29 @@ + + ]> + + + + + + + + + + + + + + + + + &include; + + + + + + + + + \ No newline at end of file -- cgit v1.2.3