有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java EJB与同步

会话bean(无状态会话bean、有状态会话bean)是否同步


共 (5) 个答案

  1. # 1 楼答案

    关于EJBbean的一个非常真实的事情是,一旦您创建了EJB3.0bean,那么EJB的方法在默认情况下是同步的

    例如

    @Statelss 类EJBclass{

    void somethod(){ }

    }

    现在,如果你要使这个方法同步,它会显示错误,就像它是不能在这个级别同步,因为它是同步的

    EJB3.0bean非常智能,性能也很好

  2. # 2 楼答案

    企业java bean不同步。由于会话bean由ejb容器维护,所以您必须在应用程序级别实现同步逻辑

  3. # 3 楼答案

    一次只能有一个线程访问您的bean。这取决于应用服务器来管理。因此,您不应该在bean中使用synchronized。这就是为什么像EntityManager这样的非线程安全应用程序可以作为实例值,而不会出现同步问题

  4. # 4 楼答案

    无状态/有状态会话bean是线程安全的。因为每个请求都会得到bean的一个专用实例,所以不需要同步

    单例会话Bean是共享的,需要由容器(container-Managed Concurrency-CMC)或用户(Bean-Managed Concurrency-BMC)进行同步

  5. # 5 楼答案

    无状态bean: 每个线程/请求都将从池中获取不同的EJB实例。SLB不应保存任何用户会话数据、任何状态。相同的代码可以并行执行。一次一个线程访问一个实例

    Statefull bean为用户会话同步。每个用户都将获得自己的会话范围实例。第二个线程/请求将等待第一个线程完成。Statefull EJB可以保存用户特定的数据。一个用户不能并行执行相同的代码。不同的用户可以并行执行相同的代码

    如果访问不允许并行访问的资源,请使用单例EJB。顾名思义,只有一个实例。默认情况下,EJB单例只能由一个线程(容器管理的并发和@Lock(WRITE))访问