MyAppJobScheduler.java
/*
 * MyAppJobScheduler.java
 *
 */

import java.util.*;
import javax.management.Notification;
import javax.management.NotificationListener;
import javax.management.InstanceNotFoundException;
import weblogic.management.timer.Timer;

// Implementing NotificationListener
public final class MyAppJobScheduler implements NotificationListener
{
    private static final long DAILY_PERIOD = Timer.ONE_DAY;
    private static final long WEEKLY_PERIOD = 7 * Timer.ONE_DAY;

    private Timer timer;
    private Integer orderNotificationId;
    private Integer inventoryNotificationId;

    public MyAppJobScheduler()
    {
        // Instantiating the Timer MBean
        timer = new Timer();
        // Registering this class as a listener
        timer.addNotificationListener(this, null, "some handback ?object");

        // These values should be read from a property file
        int orderSubmissionHour=17;
        int orderSubmissionMinute=0;

        int inventorySubmissionDay = 6;
        int inventorySubmissionHour = 22;
        int inventorySubmissionMinute = 30;

        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY,orderSubmissionHour);
        calendar.set(Calendar.MINUTE,orderSubmissionMinute);
        Date orderSubmissionDate = calendar.getTime();

        calendar.set(Calendar.DAY_OF_WEEK, inventorySubmissionDay);
        calendar.set(Calendar.HOUR_OF_DAY,inventorySubmissionHour);
        calendar.set(Calendar.MINUTE,inventorySubmissionHour);
        Date inventorySubmissionDate = calendar.getTime();

        // Add the order notification which should run every day at ?5:00 PM
		orderNotificationId = timer.addNotification("OrderSubmission",
		"Order Submission", this,orderSubmissionDate, DAILY_PERIOD);

        // Add the inventory notification which should run every Friday ?at 10:30 PM
		inventoryNotificationId = timer.addNotification?("InventorySubmission",
		"Inventory Submission", this,? inventorySubmissionDate, WEEKLY_PERIOD);

        timer.start();
        System.out.println( ">>> MyAppJobScheduler started." );
    }

    protected void finalize() throws Throwable
    {
       System.out.println(">>> MyAppJobScheduler finalize called.");
       cleanUp();

       super.finalize();
    }
 
    public synchronized void cleanUp()
    {
       System.out.println(">>> MyAppJobScheduler cleanUp method ?called.");
       try
       {
          timer.stop();
          timer.removeNotification(orderNotificationId);
          timer.removeNotification(inventoryNotificationId);
          System.out.println(">>> MyAppJobScheduler Scheduler ?stopped.");
       }
       catch (InstanceNotFoundException e)
       {
          e.printStackTrace();
       }
    }
 
    /* callback method */
    public void handleNotification(Notification notif, Object handback)
    {
       String type = notif.getType();
       if ( type.equals("OrderSubmission") )
       {
          // invoke the component or ejb that does the order processing ?and submission
       }
       else if ( type.equals("InventorySubmission") )
       {
          // invoke the component or ejb that does the inventory ?processing and submission
       }
    }

    public static void main(String[] args)
    {
       MyAppJobScheduler myAppJobScheduler = new MyAppJobScheduler();
    }

}

MyAppListener.java
/*
 * MyAppListener.java
 *
 */

import weblogic.application.ApplicationLifecycleListener;

import weblogic.application.ApplicationLifecycleEvent;

public class MyAppListener extends ApplicationLifecycleListener
{
  MyAppJobScheduler myAppJobScheduler;

  public void preStart(ApplicationLifecycleEvent evt)
  {
     System.out.println("MyAppListener:preStart Event");
  }

  public void postStart(ApplicationLifecycleEvent evt)
  {
     System.out.println( "MyAppListener:postStart Event");

     // Start the Scheduler
     myAppJobScheduler = new MyAppJobScheduler();
   }

  public void preStop(ApplicationLifecycleEvent evt)
  {
    System.out.println( "MyAppListener:preStop Event");

     // Stop the Scheduler
     myAppJobScheduler.cleanUp();

  }

  public void postStop(ApplicationLifecycleEvent evt)
  {
     System.out.println( "MyAppListener:postStop Event");
  }

  public static void main(String[] args)
  {
     System.out.println( "MyAppListener:main method");
  }

}

weblogic-application.xml

<weblogic-application>
   <listener>
      <listener-class>MyAppListener</listener-class>
    </listener>
</weblogic-application>