2

我有一个单例 EJB,它的业务方法都是@Lock(READ). 然而,在特殊情况下,他们中的一些人会调用一个私有方法来将内容保存在数据库中。处理这种情况的最佳方法是什么?我是不是该:

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

1 回答 1

0

这只是部分回答了你的问题,但这里有。

您可以将私有方法放在“私有”业务接口中,并通过容器调用它们,如下所示:

测试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();
}
于 2013-07-18T11:13:00.353 回答