Serialization Problems
diegocoronel Nov 14, 2009 8:19 PMHi, im trying to make some examples with weld/JSF2/JPA2 and i am getting some problems with serialization...
I want a stateless session DAO and i dont know how to resolve the problem
@Stateless public class UsuarioDAO extends PostgresDAO<Usuario, Integer> implements Serializable { private static final long serialVersionUID = 1L; public Usuario getUsuario( String login, String password ) { CriteriaBuilder qb = getCriteriaBuilder(); CriteriaQuery<Usuario> criteria = qb.createQuery(Usuario.class); Root<Usuario> root = criteria.from(Usuario.class); criteria .select(root) .where( qb.equal( root.get( Usuario_.login ), login ) , qb.equal( root.get( Usuario_.password ), password ) ); return entityManager.createQuery(criteria).getSingleResult(); }
public abstract class PostgresDAO <T, ID extends Serializable> { @Inject @Database protected EntityManager entityManager; @Inject private EntityManagerFactory entityManagerFactory; protected CriteriaBuilder getCriteriaBuilder() { return entityManagerFactory.getCriteriaBuilder(); }
public class PersistenceProvider implements Serializable { private static final long serialVersionUID = 1L; @PersistenceContext( unitName = "HelloWebBeans" ) private EntityManager entityManager; @PersistenceUnit( unitName = "HelloWebBeans" ) private EntityManagerFactory emf; @Produces @ConversationScoped @Database public EntityManager getEntityManager() { return entityManager; } @Produces @ConversationScoped public EntityManagerFactory getEmf() { return emf; } }
and i am getting this error:
SEVERE: Exception while loading the app org.glassfish.deployment.common.DeploymentException: The bean org.jboss.weld.bean-/C:/backup/diego/trabalho/glassfishv3_b73_nghtly/glassfish/domains/domain1/eclipseApps/HelloWebBeans/-ManagedBean-class com.fpf.web.security.login.Authenticator declares a passivating scope but has non-serializable dependency: org.jboss.weld.bean-/C:/backup/diego/trabalho/glassfishv3_b73_nghtly/glassfish/domains/domain1/eclipseApps/HelloWebBeans/-SessionBean-UsuarioDAO at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:169) at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:88) at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:239) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:337) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183) at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272) at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176) at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224) at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:362) at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:201) at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166) at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:789) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:697) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:952) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:166) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57) at com.sun.grizzly.ContextTask.run(ContextTask.java:69) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309) at java.lang.Thread.run(Thread.java:619) Caused by: org.jboss.weld.UnserializableDependencyException: The bean org.jboss.weld.bean-/C:/backup/diego/trabalho/glassfishv3_b73_nghtly/glassfish/domains/domain1/eclipseApps/HelloWebBeans/-ManagedBean-class com.fpf.web.security.login.Authenticator declares a passivating scope but has non-serializable dependency: org.jboss.weld.bean-/C:/backup/diego/trabalho/glassfishv3_b73_nghtly/glassfish/domains/domain1/eclipseApps/HelloWebBeans/-SessionBean-UsuarioDAO at org.jboss.weld.Validator.validateInjectionPointPassivationCapable(Validator.java:261) at org.jboss.weld.Validator.validateInjectionPoint(Validator.java:249) at org.jboss.weld.Validator.validateBean(Validator.java:80) at org.jboss.weld.Validator.validateRIBean(Validator.java:100) at org.jboss.weld.Validator.validateBeans(Validator.java:282) at org.jboss.weld.Validator.validateDeployment(Validator.java:268) at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:389) at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:166) ... 30 more
so, how can i have stateless session bean that with entityManager field ?
ty.