处理单例EJB上的私有写入方法

时间:2013-04-29 22:46:25

标签: java locking singleton ejb

我有一个单例EJB,其业务方法都是@Lock(READ)。但是,在特殊情况下,它们中的一些调用私有方法来保存数据库中的东西。处理这种情况的最佳方法是什么?我应该:

  • 使用@Lock(WRITE)作为私有方法,即使它不是业务方法?如果是这样,这是一种可靠的行为吗?
  • 自己在私有方法上进行同步吗?如果是这样,通过EntityManager进行同步是否安全?
  • 做一些完全不同的事情?

1 个答案:

答案 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();
}