我正在使用EJB和Spring 3构建应用程序。我有三个maven模块 - Spring jar,EJB jar和web部分。在Web部分中,我想调用我的EJB会话bean。这是代码:
@Controller
public class IndexController {
@EJB
PaymentRemote paymentRemote;
}
我还有一个应用程序上下文文件,内容为:
<jee:local-slsb id="paymentRemote" jndi-name="ejb/myBean"
business-interface="net.learntechnology.ejb.PaymentRemote"/>
和
<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor">
<property name="alwaysUseJndiLookup" value="true"/>
在我的ejb模块中,我有一个界面:
@Local
public interface PaymentRemote {
}
不幸的是,当我在JBoss上部署它时,我得到以下错误:
Error creating bean with name 'paymentRemote': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: ejb not bound.
我在网上看到了很多例子,并且都是这样配置的。我坚持了...... 任何人都可以帮助我吗?我会非常感激!
答案 0 :(得分:1)
对于JBOSS,正确的模式是: application-name / bean / remote或local
答案 1 :(得分:1)
由于我的评论结果是答案,我会改写它......
确保EJB实际上以您期望的名称绑定到JNDI。错误消息表明它不是。
在JBoss中,在JMX控制台中,查找JNDIView
对象,并调用其list
方法。如果您的EJB出现在ejb/myBean
上,它应该出现在此处。如果没有,请在不同的名称下查找,并绑定到该名称。