Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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
&引用;javax.ejb.NoSuchEJBException:找不到有状态bean:";_Java_Jboss_Jakarta Ee_Ejb 3.0_Ejb - Fatal编程技术网

&引用;javax.ejb.NoSuchEJBException:找不到有状态bean:";

&引用;javax.ejb.NoSuchEJBException:找不到有状态bean:";,java,jboss,jakarta-ee,ejb-3.0,ejb,Java,Jboss,Jakarta Ee,Ejb 3.0,Ejb,在Jboss和EJB3.0的冒险中,我正在进一步努力。 我用EJB加入了Spring3.0。我有3个模块——带有Spring控制器的web模块、带有ejb bean的ejb模块和带有其他类(如dao或一些助手)的Spring mogule。都在耳边 因此,在我的Spring控制器中,我有以下代码: @Controller public class IndexController { @EJB PaymentRemote paymentRemote; @RequestM

在Jboss和EJB3.0的冒险中,我正在进一步努力。 我用EJB加入了Spring3.0。我有3个模块——带有Spring控制器的web模块、带有ejb bean的ejb模块和带有其他类(如dao或一些助手)的Spring mogule。都在耳边

因此,在我的Spring控制器中,我有以下代码:

@Controller
public class IndexController {

    @EJB
    PaymentRemote paymentRemote;

    @RequestMapping(value = "/index")
    public ModelAndView index() throws Exception {
        ModelAndView mav = new ModelAndView("index/index");     

        paymentRemote.savePayment(123, "bla222");
        paymentRemote.sayGoodbye();
           return mav;
}
在EJB模块中,我有以下有状态bean:

@Stateful
@Interceptors( SpringBeanAutowiringInterceptor.class)
public class PaymentRemoteImpl implements PaymentRemote{

    @Autowired
    ExampleService exampleService;

    public void savePayment(long payment, String name) throws Exception {
        exampleService.savePayment(123, "kk");

    }

    @Remove
    public void sayGoodbye() {
        System.out.println("I want to finish my task here!");

    }
}
每个依赖项都被正确地注入。当我用无状态bean测试这段代码时,它工作得很好。当涉及到有状态bean时,当我调用我的方法saybye()时,我不能再次调用这个bean。我得到一个例外:

javax.ejb.NoSuchEJBException: Could not find stateful bean: a74a2l-n1u5tx-gcwd0e6a-1-gcwd18fo-9h
我不理解这种情况:/I我要求容器删除这个bean,但后来我想再次使用它,但它想再次找到相同的bean。我想,虽然我要求删除它,但它会根据我的要求再次创建。
谁能帮我解决这个问题?我被绊倒了。

您不能将有状态会话bean(SFSB)注入到多线程组件中,该组件可能由多个并发客户端(如Servlet或控制器)共享。改为执行JNDI查找,并将bean放入
HttpSession

另见

无论发生什么情况,您都不能同时访问SFSB,即使它存储在会话中。要么同步servlet,要么包装bean以同步方法:这远远超出了我在这个特定问题中要解决的问题(即不能将注入用于SFSB)。