<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="https://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    ClassCastException with Quartz Servlet and EJBInvokerJob in Jboss 6
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="https://community.jboss.org/people/julieh">Julie H</a> in <i>Beginner's Corner</i> - <a href="https://community.jboss.org/message/649361#649361">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Hi All.</p><p>I am currently trying to get a Scheduled Quartz Job to run within JBoss 6.1.0.Final.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I initially had Quartz running as a service in JBoss, however after many days of trying to get it running correctly(class loading issues), I decided to try removing the Quartz service and distribute Quartz within my application ear.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I am initiating the Scheduler via a servlet, which seems to be working ok.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>My problem arises when the Job I try to schedule is in an EJB.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I can successfully schedule a job which is NOT in an EJB. (I just have a simple class which implements the Job class), but when attempting to schedule a job which is in an EJB, then I get the following ClassCastException :</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre>2012-01-30 15:46:00,055 ERROR [org.quartz.core.ErrorLogger] (DefaultQuartzScheduler_Worker-3) Job (My Test Job.Test Quartz Job threw an exception.: org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.ClassCastException]
&#160;&#160;&#160;&#160;&#160;at org.quartz.core.JobRunShell.run(JobRunShell.java:234) [:]
&#160;&#160;&#160;&#160;&#160;at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) [:]
Caused by: java.lang.ClassCastException
&#160;&#160;&#160;&#160;&#160;at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:229) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;at org.quartz.jobs.ee.ejb.EJBInvokerJob.execute(EJBInvokerJob.java:163) [:]
&#160;&#160;&#160;&#160;&#160;at org.quartz.core.JobRunShell.run(JobRunShell.java:223) [:]
&#160;&#160;&#160;&#160;&#160;... 1 more
Caused by: java.lang.ClassCastException: $Proxy149 cannot be cast to org.omg.CORBA.Object
&#160;&#160;&#160;&#160;&#160;at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:212) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;... 4 more


</pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Here is the init method of the servlet :</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre>public void init(ServletConfig config) throws ServletException {

&#160;&#160;&#160;&#160; System.out.println("ChannelToolsSchedulingServlet - Scheduling Job ..");

&#160;&#160;&#160;&#160; try {
&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; String ejbJNDI = config.getInitParameter("EJBJNDI");
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.println("ChannelToolsSchedulingServlet - EJBJNDI = " + ejbJNDI);

&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; String ejbMethod = config.getInitParameter("EJBMethod");
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.println("ChannelToolsSchedulingServlet - EJBMethod = " + ejbMethod);
&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; JobDetail jd = new JobDetail("Test Quartz Job","My Test Job",EJBInvokerJob.class);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; jd.getJobDataMap().put("ejb", ejbJNDI);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; jd.getJobDataMap().put("method", ejbMethod);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Object[] jdArgs = new Object[0];
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; jd.getJobDataMap().put("args", jdArgs);
&#160;&#160; 
&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; CronTrigger cronTrigger = new CronTrigger("CronTrigger1", "CronTrigger1");
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; String cronExpr = null;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Get the cron Expression as an Init parameter
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cronExpr = config.getInitParameter("CronExpression");
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.println("ChannelToolsSchedulingServlet - CronExpression = " + cronExpr);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cronTrigger.setCronExpression(cronExpr);
&#160;&#160;&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; sched.scheduleJob(jd, cronTrigger);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.println("ChannelToolsSchedulingServlet - Job scheduled now ..");
&#160;&#160;&#160;&#160; } 
&#160;&#160;&#160;&#160; catch (Exception e) {
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; e.printStackTrace();
&#160;&#160;&#160;&#160; }
&#160; 
}
</pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Here is the relevant bits from my web.xml</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 

&#160;&#160;&#160;&#160;&#160; &lt;servlet&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;servlet-name&gt;QuartzInitializer&lt;/servlet-name&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;display-name&gt;Quartz Initializer Servlet&lt;/display-name&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;servlet-class&gt;org.quartz.ee.servlet.QuartzInitializerServlet&lt;/servlet-class&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;init-param&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;param-name&gt;shutdown-on-unload&lt;/param-name&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;param-value&gt;true&lt;/param-value&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/init-param&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;init-param&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;param-name&gt;start-scheduler-on-load&lt;/param-name&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;param-value&gt;true&lt;/param-value&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/init-param&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
&#160;&#160;&#160;&#160;&#160; &lt;/servlet&gt;
&#160;&#160;&#160;&#160;&#160; &lt;!-- schedule the EJB job --&gt;
&#160;&#160;&#160;&#160;&#160; &lt;servlet&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;servlet-name&gt;ResendSchedulingServlet&lt;/servlet-name&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;display-name&gt;ResendSchedulingServlet&lt;/display-name&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;servlet-class&gt;com.company.channels.tools.ChannelToolsSchedulingServlet&lt;/servlet-class&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;init-param&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;param-name&gt;CronExpression&lt;/param-name&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;param-value&gt;0 0/1 * * * ?&lt;/param-value&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/init-param&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;init-param&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;param-name&gt;EJBMethod&lt;/param-name&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;param-value&gt;processRetryDirectory&lt;/param-value&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/init-param&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;init-param&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;param-name&gt;EJBJNDI&lt;/param-name&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;param-value&gt;AMIResend/remote&lt;/param-value&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/init-param&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;load-on-startup&gt;2&lt;/load-on-startup&gt;
&#160;&#160;&#160;&#160;&#160; &lt;/servlet&gt;
&#160;&#160;&#160;&#160;&#160; &lt;!-- schedule the NON-EJB job --&gt;
&#160;&#160;&#160;&#160;&#160; &lt;servlet&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;servlet-name&gt;TestSchedulingServlet&lt;/servlet-name&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;display-name&gt;TestSchedulingServlet&lt;/display-name&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;servlet-class&gt;com.company.channels.tools.TestSchedulingServlet&lt;/servlet-class&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;init-param&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;param-name&gt;CronExpression&lt;/param-name&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;param-value&gt;0 0/1 * * * ?&lt;/param-value&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/init-param&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;load-on-startup&gt;2&lt;/load-on-startup&gt;
&#160;&#160;&#160;&#160;&#160; &lt;/servlet&gt;

</pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I have tried using both the remote and local interface of my EJB, both are installed as per following Jboss logging :</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre>2012-01-30 15:44:49,224 INFO&#160; [org.jboss.ejb3.session.SessionSpecContainer] (Thread-2) Starting jboss.j2ee:ear=Channels.ear,jar=Channels-Ejb.jar,name=AMIResend,service=EJB3
2012-01-30 15:44:49,240 INFO&#160; [org.jboss.ejb3.EJBContainer] (Thread-2) STARTED EJB: com.company.channel.ejb.process.AMIResendEJB ejbName: AMIResend
2012-01-30 15:44:49,506 INFO&#160; [org.jboss.ejb3.proxy.impl.jndiregistrar.JndiSessionRegistrarBase] (Thread-2) Binding the following Entries in Global JNDI:

&#160;&#160;&#160;&#160;&#160;AMIResend/remote - EJB3.x Default Remote Business Interface
&#160;&#160;&#160;&#160;&#160;Channels/AMIResend/remote-com.company.channel.ejb.process.interfaces.AMIResendRemote - EJB3.x Remote Business Interface
&#160;&#160;&#160;&#160;&#160;AMIResend/local - EJB3.x Default Local Business Interface
&#160;&#160;&#160;&#160;&#160;Channels/AMIResend/local-com.company.channel.ejb.process.interfaces.AMIResendLocal - EJB3.x Local Business Interface


</pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Here is the EJB class and relevant interfaces</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre>package com.company.channel.ejb.process;
&#160; import javax.ejb.Stateless;
&#160; import javax.ejb.TransactionManagement;
&#160; import javax.ejb.TransactionManagementType;
&#160; import org.jboss.ejb3.annotation.LocalBinding;
&#160; import org.jboss.ejb3.annotation.RemoteBinding;
&#160; import com.company.channel.ejb.process.interfaces.AMIResendRemote;
&#160; import com.company.channel.ejb.process.interfaces.AMIResendLocal;
&#160; import javax.ejb.EJBException;
&#160; 
&#160; @LocalBinding(jndiBinding="AMIResend/local")
&#160; @RemoteBinding(jndiBinding="AMIResend/remote")
&#160; 
&#160; @Stateless (name="AMIResend"&#160;&#160; ,mappedName="ejb/company/axis/AMIResend")
&#160; @TransactionManagement(TransactionManagementType.BEAN)
&#160; 
&#160; public class AMIResendEJB implements AMIResendRemote,AMIResendLocal {
&#160; 
&#160;&#160;&#160;&#160; private javax.ejb.SessionContext mySessionCtx;
&#160; 
&#160;&#160;&#160;&#160; public AMIResendEJB() {
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.println("Calling AMIResendEJB constructor");
&#160;&#160;&#160;&#160; }

&#160;&#160;&#160;&#160; public javax.ejb.SessionContext getSessionContext() {
&#160;&#160;&#160;&#160;&#160;&#160;&#160; return mySessionCtx;
&#160;&#160;&#160;&#160; }
&#160; 

&#160;&#160;&#160;&#160; public void setSessionContext(javax.ejb.SessionContext ctx) {
&#160;&#160;&#160;&#160;&#160;&#160;&#160; mySessionCtx = ctx;
&#160;&#160;&#160;&#160; }
&#160; 
&#160;&#160;&#160; public void processRetryDirectory() throws EJBException {
&#160; 
&#160; &#160;&#160;&#160;&#160;&#160;&#160; System.out.println("running the processRetryDirectory method of AMIResendEJB");
&#160; 
&#160;&#160;&#160; }
&#160; }
</pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre>package com.company.channel.ejb.process.interfaces;

import javax.ejb.Local;


@Local

public interface AMIResendLocal extends AMIResend {
}
</pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre>package com.company.channel.ejb.process.interfaces;

import javax.ejb.Remote;


@Remote

public interface AMIResendRemote extends AMIResend {

}

</pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre>package com.company.channel.ejb.process.interfaces;

import javax.ejb.EJBException;


public interface AMIResend {

&#160; public void processRetryDirectory() throws EJBException;
}
</pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The non-ejb job which works is just a simple 'Hello World' class, so I didn't include the code.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The output from my logging is as follows :</p><pre>2012-01-30 15:44:52,474 INFO&#160; [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/channel]] (Thread-2) QuartzInitializer: Quartz Initializer Servlet loaded, initializing Scheduler...
2012-01-30 15:44:52,490 INFO&#160; [org.quartz.impl.StdSchedulerFactory] (Thread-2) Using default implementation for ThreadExecutor
2012-01-30 15:44:52,490 INFO&#160; [org.quartz.simpl.SimpleThreadPool] (Thread-2) Job execution threads will use class loader of thread: Thread-2
2012-01-30 15:44:52,521 INFO&#160; [org.quartz.core.SchedulerSignalerImpl] (Thread-2) Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2012-01-30 15:44:52,521 INFO&#160; [org.quartz.core.QuartzScheduler] (Thread-2) Quartz Scheduler v.1.8.6 created.
2012-01-30 15:44:52,521 INFO&#160; [org.quartz.simpl.RAMJobStore] (Thread-2) RAMJobStore initialized.
2012-01-30 15:44:52,521 INFO&#160; [org.quartz.core.QuartzScheduler] (Thread-2) Scheduler meta-data: Quartz Scheduler (v1.8.6) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
&#160; Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
&#160; NOT STARTED.
&#160; Currently in standby mode.
&#160; Number of jobs executed: 0
&#160; Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
&#160; Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.

2012-01-30 15:44:52,521 INFO&#160; [org.quartz.impl.StdSchedulerFactory] (Thread-2) Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
2012-01-30 15:44:52,521 INFO&#160; [org.quartz.impl.StdSchedulerFactory] (Thread-2) Quartz scheduler version: 1.8.6
2012-01-30 15:44:52,521 INFO&#160; [org.quartz.core.QuartzScheduler] (Thread-2) Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
2012-01-30 15:44:52,521 INFO&#160; [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/channel]] (Thread-2) QuartzInitializer: Scheduler has been started...
2012-01-30 15:44:52,521 INFO&#160; [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/channel]] (Thread-2) QuartzInitializer: Storing the Quartz Scheduler Factory in the servlet context at key: org.quartz.impl.StdSchedulerFactory.KEY
2012-01-30 15:44:52,552 INFO&#160; [STDOUT] (Thread-2) TestSchedulingServlet - Scheduling Job ..

2012-01-30 15:44:52,552 INFO&#160; [STDOUT] (Thread-2) TestSchedulingServlet - CronExpression = 0 0/1 * * * ?

2012-01-30 15:44:52,677 INFO&#160; [STDOUT] (Thread-2) TestSchedulingServlet - Job scheduled now ..

2012-01-30 15:44:52,693 INFO&#160; [STDOUT] (Thread-2) ChannelToolsSchedulingServlet - Scheduling Job ..

2012-01-30 15:44:52,693 INFO&#160; [STDOUT] (Thread-2) ChannelToolsSchedulingServlet - EJBJNDI = AMIResend/remote

2012-01-30 15:44:52,709 INFO&#160; [STDOUT] (Thread-2) ChannelToolsSchedulingServlet - EJBMethod = processRetryDirectory

2012-01-30 15:44:52,709 INFO&#160; [STDOUT] (Thread-2) ChannelToolsSchedulingServlet - CronExpression = 0 0/1 * * * ?

2012-01-30 15:44:52,709 INFO&#160; [STDOUT] (Thread-2) ChannelToolsSchedulingServlet - Job scheduled now ..

2012-01-30 15:44:52,803 INFO&#160; [org.apache.coyote.http11.Http11Protocol] (Thread-2) Starting Coyote HTTP/1.1 on http-127.0.0.1-8080
2012-01-30 15:44:52,818 INFO&#160; [org.apache.coyote.ajp.AjpProtocol] (Thread-2) Starting Coyote AJP/1.3 on ajp-127.0.0.1-8009
2012-01-30 15:44:52,818 INFO&#160; [org.jboss.bootstrap.impl.base.server.AbstractServer] (Thread-2) JBossAS [6.1.0.Final "Neo"] Started in 2m:769ms
2012-01-30 15:44:53,521 DEBUG [org.quartz.utils.UpdateChecker] (Timer-1) Checking for available updated version of Quartz...
2012-01-30 15:45:00,021 DEBUG [org.quartz.simpl.SimpleJobFactory] (DefaultQuartzScheduler_QuartzSchedulerThread) Producing instance of Job 'SampleJob.SampleJob', class=com.company.channels.tools.SampleJob
2012-01-30 15:45:00,037 DEBUG [org.quartz.core.JobRunShell] (DefaultQuartzScheduler_Worker-1) Calling execute on job SampleJob.SampleJob
2012-01-30 15:45:00,068 DEBUG [org.quartz.simpl.SimpleJobFactory] (DefaultQuartzScheduler_QuartzSchedulerThread) Producing instance of Job 'My Test Job.Test Quartz Job', class=org.quartz.jobs.ee.ejb.EJBInvokerJob
2012-01-30 15:45:00,053 INFO&#160; [STDOUT] (DefaultQuartzScheduler_Worker-1) Hello World! - Mon Jan 30 15:45:00 EST 2012

2012-01-30 15:45:00,100 DEBUG [org.quartz.core.JobRunShell] (DefaultQuartzScheduler_Worker-2) Calling execute on job My Test Job.Test Quartz Job
2012-01-30 15:45:00,459 ERROR [org.quartz.core.JobRunShell] (DefaultQuartzScheduler_Worker-2) Job My Test Job.Test Quartz Job threw an unhandled Exception: : java.lang.ClassCastException
&#160;&#160;&#160;&#160;&#160;at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:229) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;at org.quartz.jobs.ee.ejb.EJBInvokerJob.execute(EJBInvokerJob.java:163) [:]
&#160;&#160;&#160;&#160;&#160;at org.quartz.core.JobRunShell.run(JobRunShell.java:223) [:]
&#160;&#160;&#160;&#160;&#160;at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) [:]
Caused by: java.lang.ClassCastException: $Proxy149 cannot be cast to org.omg.CORBA.Object
&#160;&#160;&#160;&#160;&#160;at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:212) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;... 4 more

2012-01-30 15:45:00,459 ERROR [org.quartz.core.ErrorLogger] (DefaultQuartzScheduler_Worker-2) Job (My Test Job.Test Quartz Job threw an exception.: org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.ClassCastException]
&#160;&#160;&#160;&#160;&#160;at org.quartz.core.JobRunShell.run(JobRunShell.java:234) [:]
&#160;&#160;&#160;&#160;&#160;at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) [:]
Caused by: java.lang.ClassCastException
&#160;&#160;&#160;&#160;&#160;at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:229) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;at org.quartz.jobs.ee.ejb.EJBInvokerJob.execute(EJBInvokerJob.java:163) [:]
&#160;&#160;&#160;&#160;&#160;at org.quartz.core.JobRunShell.run(JobRunShell.java:223) [:]
&#160;&#160;&#160;&#160;&#160;... 1 more
Caused by: java.lang.ClassCastException: $Proxy149 cannot be cast to org.omg.CORBA.Object
&#160;&#160;&#160;&#160;&#160;at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:212) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;... 4 more

2012-01-30 15:46:00,008 DEBUG [org.quartz.simpl.SimpleJobFactory] (DefaultQuartzScheduler_QuartzSchedulerThread) Producing instance of Job 'My Test Job.Test Quartz Job', class=org.quartz.jobs.ee.ejb.EJBInvokerJob
2012-01-30 15:46:00,039 DEBUG [org.quartz.core.JobRunShell] (DefaultQuartzScheduler_Worker-3) Calling execute on job My Test Job.Test Quartz Job
2012-01-30 15:46:00,039 DEBUG [org.quartz.simpl.SimpleJobFactory] (DefaultQuartzScheduler_QuartzSchedulerThread) Producing instance of Job 'SampleJob.SampleJob', class=com.company.channels.tools.SampleJob
2012-01-30 15:46:00,039 DEBUG [org.quartz.core.JobRunShell] (DefaultQuartzScheduler_Worker-4) Calling execute on job SampleJob.SampleJob
2012-01-30 15:46:00,039 INFO&#160; [STDOUT] (DefaultQuartzScheduler_Worker-4) Hello World! - Mon Jan 30 15:46:00 EST 2012

2012-01-30 15:46:00,055 ERROR [org.quartz.core.JobRunShell] (DefaultQuartzScheduler_Worker-3) Job My Test Job.Test Quartz Job threw an unhandled Exception: : java.lang.ClassCastException
&#160;&#160;&#160;&#160;&#160;at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:229) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;at org.quartz.jobs.ee.ejb.EJBInvokerJob.execute(EJBInvokerJob.java:163) [:]
&#160;&#160;&#160;&#160;&#160;at org.quartz.core.JobRunShell.run(JobRunShell.java:223) [:]
&#160;&#160;&#160;&#160;&#160;at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) [:]
Caused by: java.lang.ClassCastException: $Proxy149 cannot be cast to org.omg.CORBA.Object
&#160;&#160;&#160;&#160;&#160;at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:212) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;... 4 more

2012-01-30 15:46:00,055 ERROR [org.quartz.core.ErrorLogger] (DefaultQuartzScheduler_Worker-3) Job (My Test Job.Test Quartz Job threw an exception.: org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.ClassCastException]
&#160;&#160;&#160;&#160;&#160;at org.quartz.core.JobRunShell.run(JobRunShell.java:234) [:]
&#160;&#160;&#160;&#160;&#160;at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) [:]
Caused by: java.lang.ClassCastException
&#160;&#160;&#160;&#160;&#160;at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:229) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;at org.quartz.jobs.ee.ejb.EJBInvokerJob.execute(EJBInvokerJob.java:163) [:]
&#160;&#160;&#160;&#160;&#160;at org.quartz.core.JobRunShell.run(JobRunShell.java:223) [:]
&#160;&#160;&#160;&#160;&#160;... 1 more
Caused by: java.lang.ClassCastException: $Proxy149 cannot be cast to org.omg.CORBA.Object
&#160;&#160;&#160;&#160;&#160;at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:212) [:1.6.0_16]
&#160;&#160;&#160;&#160;&#160;... 4 more


</pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>So as can be seen, the scheduler seems to be running.<br/>It says that it has scheduled the jobs, and does attempt to run them both every minute.<br/>The non-EJB job runs successfully, yet the EJB job gets the class cast exception.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Any pointers on how to solve this issue, or things to try would be greatly appreciated.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Thanks.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Julie</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="https://community.jboss.org/message/649361#649361">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in Beginner's Corner at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2075">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>