标签:java java-ee jboss ejb-3-0 ejb
我在与Jboss和EJB 3.0的冒险中进一步努力.
我使用EJB加入了Spring 3.0.我有3个模块 – 带有Spring控制器的web模块,带有我的EJB bean的ejb模块和带有dao或其他帮助器的其他类的spring mogule.一切都在耳边.
所以,在我的Spring Controller中,我有以下代码:
@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时,我调用我的方法sayGoodbye()我不能再调用这个bean.我得到了例外:
javax.ejb.NoSuchEJBException: Could not find stateful bean: a74a2l-n1u5tx-gcwd0e6a-1-gcwd18fo-9h
我不明白这种情况:/我要求容器移除bean但后来我想再次使用它但它想再次找到我同样的bean.我想虽然我要求删除它,但它会再次根据我的要求创建.
有人可以帮助我解决我的问题吗?我被困了.
解决方法:
您不能将有状态会话Bean(SFSB)注入到多线程组件中,这些组件可能由多个并发客户端(如Servlet或Controller)共享.改为执行JNDI查找并将bean放入HttpSession.
也可以看看
> Stateless and Stateful Enterprise Java Beans
> New Stateful session bean instance without calling lookup
标签:java,java-ee,jboss,ejb-3-0,ejb 来源: https://codeday.me/bug/20190621/1257680.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。