我有一个单例EJB,其业务方法都是@Lock(READ)
。但是,在特殊情况下,它们中的一些调用私有方法来保存数据库中的东西。处理这种情况的最佳方法是什么?我应该:
@Lock(WRITE)
作为私有方法,即使它不是业务方法?如果是这样,这是一种可靠的行为吗?EntityManager
进行同步是否安全?答案 0 :(得分:0)
这只能部分回答你的问题,但现在就去了。
您可以将私有方法放在“私有”业务接口中,并通过容器调用它们,如下所示:
<强> TestEJB.java 强>:
@Stateless
public class TestEJB implements PrivateIface, PublicIface {
SessionContext ctx;
public void doBusiness() {
PrivateIface businessObject = ctx.getBusinessObject(PrivateIface.class);
businessObject.doPrivateBusinness();
}
@SomeContainerAnnotation
public void doPrivateBusinness() {
}
}
@Local
interface PrivateIface {
void doPrivateBusinness();
}
<强> PublicIface.java 强>:
@Local
public interface PublicIface {
void doBusiness();
}