2
我使用JBoss 6.1决赛,并获得我的Web应用程序后,以下错误消息运行一段时间(注意应用程序不会崩溃),其次是一个很长的堆栈跟踪。我注意到这个问题只发生在有状态会话bean被注入到其中的有状态会话bean中。钝化问题有状态会话Bean
16:10:59769 ERROR [org.jboss.ejb3.cache.simple.SimpleStatefulCache.UutSerialNumberServiceBean]问题钝化螺纹:javax.ejb.EJBException异常:无法钝化;未能保存状态
这里是有问题的有状态会话bean ...
package com.ray.TEI.ejb;
import java.io.Serializable;
import javax.ejb.Stateful;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;
import com.ray.TEI.model.TestProcedure;
import com.ray.TEI.model.Uut;
import com.ray.TEI.model.UutSerialNumber;
@Stateful
public class UutSerialNumberServiceBean implements Serializable {
private static final long serialVersionUID = 1L;
@PersistenceContext(unitName="jasoni", type=PersistenceContextType.EXTENDED)
protected EntityManager em;
@Inject private ExecProcedureServiceBean execProcedureServiceBean;
public boolean isDuplicateSerialNumber(Uut uut, String serialNumber) {
return ((Number)em.createNamedQuery("UutSerialNumber.getCountByUutIdAndSerialNumber")
.setParameter("uut", uut)
.setParameter("serialNumber", serialNumber)
.getSingleResult()).intValue() > 0;
}
public UutSerialNumber findUutSerialNumberByUutSerialNumberId(Integer uutSerialNumberId) {
return em.find(UutSerialNumber.class, uutSerialNumberId);
}
public UutSerialNumber editSerialNumber(Integer uutSerialNumberId, String serialNumber) {
UutSerialNumber uutSerialNumber = findUutSerialNumberByUutSerialNumberId(uutSerialNumberId);
uutSerialNumber.setSerialNumber(serialNumber);
return uutSerialNumber;
}
public UutSerialNumber createSerialNumber(Uut uut, String serialNumber) {
UutSerialNumber uutSerialNumber = new UutSerialNumber();
uutSerialNumber.setSerialNumber(serialNumber);
uutSerialNumber.setUut(uut);
uut.getSerialNumbers().add(uutSerialNumber);
em.persist(uutSerialNumber);
for (TestProcedure testProcedure : uut.getTestProcedures()) {
execProcedureServiceBean.createExecProcedure(uutSerialNumber, testProcedure);
}
return uutSerialNumber;
}
}
这里是注入有状态会话bean ...
package com.ray.TEI.ejb;
import java.io.Serializable;
import javax.ejb.Stateful;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;
import com.ray.TEI.model.ExecProcedure;
import com.ray.TEI.model.TestProcedure;
import com.ray.TEI.model.UutSerialNumber;
@Stateful
public class ExecProcedureServiceBean implements Serializable {
private static final long serialVersionUID = 1L;
@PersistenceContext(unitName="jasoni", type=PersistenceContextType.EXTENDED)
protected EntityManager em;
public ExecProcedure createExecProcedure(UutSerialNumber uutSerialNumber, TestProcedure testProcedure) {
ExecProcedure execProcedure = new ExecProcedure();
execProcedure.setUutSerialNumber(uutSerialNumber);
execProcedure.setTestProcedure(testProcedure);
execProcedure.setIterationCount(0);
em.persist(execProcedure);
return execProcedure;
}
}
人知道什么不对的?
感谢, 杰森
感谢月我试图使用 停用钝化“@CacheConfig(MAXSIZE = 0,idleTimeoutSeconds = 0)” ,现在有不同的问题。我将这些有状态会话Bean注入到RequestScoped支持bean中以加载视图数据,现在看起来即使注入了一个对象(例如,打印出的参考给出了 “端口[jboss的无接口视图.j2ee:?罐子= TEI.war,名称= ProgramServiceBean,服务= EJB3]和会话43g443f-ep5eqs-h1822776-1-h18233w9-DF” - 但是,方法对象调用不工作任何想法 谢谢再次!杰森 – JasonI 2012-04-19 17:03:38
不同的问题 - >新的问题... :)这是更容易处理。 – 2012-04-19 20:56:29
好的,会发布它! – JasonI 2012-04-19 21:44:41