Stateless component null?
ypasmk Oct 21, 2009 9:02 AMHi i have one stateless and one stateful bean ... my stateless bean is :
@Stateless @Name("processor") public class SchedJobAction implements SchedJob{ @Logger private Log log; @In QuartzTriggerHandle timer; @Asynchronous public void scheduleAlert(@Expiration Date when, @IntervalDuration Long interval, @FinalExpiration Date endDate) { log.info("working now"); } public void testMethod() { log.info("test method ok"); } }
my stateful bean is
@Stateful @Name("testJobAction") public class testJobAction implements testJob { @Logger private Log log; @In(create=true) SchedJobAction processor; @Remove @Destroy public void destroy() { // TODO Auto-generated method stub } public void startJob() { // TODO Auto-generated method stub log.info("hi there"); Calendar cal = Calendar.getInstance (); cal.set (209, Calendar.OCTOBER, 21); //SchedJobAction processor=new SchedJobAction(); processor.testMethod(); } }
when the startJob method is called I get the following exception
... 93 more Caused by: java.lang.IllegalArgumentException: Could not set field value by reflection: testJobAction.processor on: panda.test.testJobAction with value: class org.javassist.tmp.java.lang.Object_$$_javassist_seam_4 at org.jboss.seam.util.Reflections.set(Reflections.java:86) at org.jboss.seam.Component.setFieldValue(Component.java:1923) ... 121 more Caused by: java.lang.IllegalArgumentException at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) at java.lang.reflect.Field.set(Field.java:657) at org.jboss.seam.util.Reflections.set(Reflections.java:71) ... 122 more 09:58:14,362 WARN [lifecycle] #{testJobAction.startJob}: javax.ejb.EJBTransactionRolledbackException: could not set field value: testJobAction.processor javax.faces.FacesException: #{testJobAction.startJob}: javax.ejb.EJBTransactionRolledbackException: could not set field value: testJobAction.processor at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118) at javax.faces.component.UICommand.broadcast(UICommand.java:387) at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321) at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296) at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
If I remove the
@In SchedJobAction processor
and just insert
SchedJobAction processor=new SchedJobAction()
then when the processor.testMethod() is called, the timer and log are both null...what am I doing wrong?