Event test
fiorenzino Jun 2, 2009 1:19 AMHi,
i'm testing JSR 299 event mechanism (in jboss-5.1.0.GA), with a stupid example.
A simple JSF Handler (NoteHandler) with property 'note'.
I want fire a new event (in a internal method of NoteHandler and in other jsf handler NoteObserver) when the NoteHandler change note value.
If i don't use @SessionScoped notation for NoteHandler, my example work correctly, but if i use @SessionScoped, at deploy time, thi is the error:
00:54:33,231 ERROR [AbstractKernelController] Error installing to Start: name=vfsfile:/usr/jboss/jboss-5.1.0.GA/server/webbeans/deploy/prenotazioniScooter.ear/_WebBeansBootstrapBean state=Create javax.inject.UnserializableDependencyException: The bean Session scoped simple bean 'osservato' it.reservations.web.Osservato, API types = [Osservato, Object, Serializable], binding types = [@Current] declares a passivating scopes but has non-serializable dependency: Built-in implicit javax.event.Event bean at org.jboss.webbeans.BeanValidator.validate(BeanValidator.java:129) at org.jboss.webbeans.bootstrap.WebBeansBootstrap.boot(WebBeansBootstrap.java:207) at org.jboss.webbeans.bootstrap.api.helpers.BootstrapBean.boot(BootstrapBean.java:120) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59) at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150) at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66) at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241) at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47) at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109) at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70) at org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221) at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54) at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42) at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62) at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71) at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51) at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631) at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540) at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:121) at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:51) at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62) at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50) at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171) at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439) at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157) at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178) at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1210) at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098) at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631) at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984) at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822) at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553) at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781) at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702) at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117) at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:362) at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:255) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619)
Where is my error??
Thanks,
Fiorenzo
NoteHandler:
@Named
@SessionScoped
public class NoteHandler implements Serializable {
private String note;
private boolean editMode;
@Fires
Event<ChangeNoteEvent> event;
public NoteHandler() {}
public String addNote1() {
System.out.println("addNote1");
setNote("");
setEditMode(false);
return "/test/test.xhtml";
}
public String addNote2() {
System.out.println("addNote2");
event.fire(new ChangeNoteEvent(getNote()),
new AnnotationLiteral<Created>() {
});
return "/test/testOk.xhtml";
}
public String modNote1() {
System.out.println("modNote1");
setEditMode(true);
return "/test/test.xhtml";
}
public String modNote2() {
System.out.println("modNote2");
setEditMode(false);
event.fire(new ChangeNoteEvent(getNote()),
new AnnotationLiteral<Updated>() {
});
return "/test/testOk.xhtml";
}
public String getNote() {
return note;
}
public void setNote(String note) {
System.out.println("setNote: " + note);
this.note = note;
}
public void afterCreated(@Observes @Created ChangeNoteEvent event) {
System.out.println("Osservato - CREAZIONE: " + event.getNote());
}
public void afterUpdated(@Observes @Updated ChangeNoteEvent event) {
System.out.println("Osservato - UPDATE: " + event.getNote());
}
public boolean isEditMode() {
return editMode;
}
public void setEditMode(boolean editMode) {
this.editMode = editMode;
}
}
NoteObserver:
@Named
@SessionScoped
public class NoteObserver implements Serializable {
public NoteObserver() {
// TODO Auto-generated constructor stub
}
public void afterCreated(@Observes @Created ChangeNoteEvent event) {
System.out.println("NoteObserver - @Created: " + event.getNote());
}
public void afterUpdated(@Observes @Updated ChangeNoteEvent event) {
System.out.println("NoteObserver - @Updated: " + event.getNote());
}
}ChangeNoteEvent:
public class ChangeNoteEvent implements Serializable {
private String note;
public ChangeNoteEvent() {
}
public ChangeNoteEvent(String note) {
this.note = note;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
}