在Glassfish 3.1.2.2(build 5)中,当我使用@Inject而不是@EJB注入EJB时(我声明它是瞬态的),我无法序列化而不是bean。如果我改为@EJB它会起作用。
@Inject
transient BDEJB ejb;
我对WebSphere没有同样的问题。
对我来说,使用CDI注入替代品进行测试非常重要。
对我来说,确保会话范围bean可序列化以确保会话群集正常工作非常重要
package com.gneis.explains.ejb;
import java.util.List;
import javax.ejb.Stateless;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.gneis.explains.jpa.BaseDatos;
@Stateless
@Named
public class BDEJB {
@PersistenceContext(unitName = "ORARQU")
protected EntityManager em;
public List<BaseDatos> getBasesDeDatos() {
return em.createQuery("select bd from BaseDatos bd").getResultList();
}
public void add(BaseDatos bd) {
em.persist(bd);
}
public void delete(BaseDatos bd) {
em.remove(em.find(BaseDatos.class, bd.getId()));
}
public void update(BaseDatos bd) {
em.merge(bd);
}
}