将EJB3与Spring集成

时间:2010-08-09 11:34:55

标签: java spring jboss ejb-3.0

我正在使用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.

我在网上看到了很多例子,并且都是这样配置的。我坚持了...... 任何人都可以帮助我吗?我会非常感激!

2 个答案:

答案 0 :(得分:1)

对于JBOSS,正确的模式是: application-name / bean / remote或local

答案 1 :(得分:1)

由于我的评论结果是答案,我会改写它......

确保EJB实际上以您期望的名称绑定到JNDI。错误消息表明它不是。

在JBoss中,在JMX控制台中,查找JNDIView对象,并调用其list方法。如果您的EJB出现在ejb/myBean上,它应该出现在此处。如果没有,请在不同的名称下查找,并绑定到该名称。