我有一个单例 EJB,它的业务方法都是@Lock(READ)
. 然而,在特殊情况下,他们中的一些人会调用一个私有方法来将内容保存在数据库中。处理这种情况的最佳方法是什么?我是不是该:
- 用于
@Lock(WRITE)
该私有方法,即使它不是业务方法?如果是这样,这是一个可靠的行为吗? - 自己做私有方法的同步吗?如果是这样,通过 同步是否安全
EntityManager
? - 做一些完全不同的事情?
这只是部分回答了你的问题,但这里有。
您可以将私有方法放在“私有”业务接口中,并通过容器调用它们,如下所示:
测试EJB.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();
}