Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading Java EJB注入如何与多线程一起工作?_Multithreading_Jakarta Ee_Servlets_Dependency Injection_Ejb - Fatal编程技术网

Multithreading Java EJB注入如何与多线程一起工作?

Multithreading Java EJB注入如何与多线程一起工作?,multithreading,jakarta-ee,servlets,dependency-injection,ejb,Multithreading,Jakarta Ee,Servlets,Dependency Injection,Ejb,点击链接。我理解(或不理解)您可以在servlet中使用@EJB注释注入EJB。servlet是在假定它将以多线程方式运行的情况下创建的。然而,EJB(除了单例)是在假设一次只有一个线程使用它的情况下创建的。但是servlet中的注入是在servlet类的成员上完成的,这意味着servlet上的多个线程可能会并发地访问该成员,从而导致EJB同时具有多个线程。那么这是如何工作的呢?只要您注入一个无状态bean,您就安全了 实际上,您注入Servlet的是存根&而不是真正的引用。当servlet调用

点击链接。我理解(或不理解)您可以在servlet中使用@EJB注释注入EJB。servlet是在假定它将以多线程方式运行的情况下创建的。然而,EJB(除了单例)是在假设一次只有一个线程使用它的情况下创建的。但是servlet中的注入是在servlet类的成员上完成的,这意味着servlet上的多个线程可能会并发地访问该成员,从而导致EJB同时具有多个线程。那么这是如何工作的呢?

只要您注入一个无状态bean,您就安全了

实际上,您注入Servlet的是存根&而不是真正的引用。当servlet调用存根时,调用被委托给容器管理的池实例。因此,并发调用将由不同的ejb实例处理,即使它是相同的存根


EJB本身是线程安全的

知道它们如何实现存根吗?这应该是特定于容器的,看看动态代理