无法访问 Spring 控制器中的 EJB

Unable to access EJB in Spring controller

我的 EJB 如下所示,并使用 JNDI 名称部署在 Glassfish 上(从 Glassfish 控制台检索)- java:global/FinalEJBProject-ejb/AdminOperationsBean!com.humber.its.n01131590.AdminOperationsBeanRemote

@Stateless(mappedName = "ejb/AdminOperationsBean")
public class AdminOperationsBean implements AdminOperationsBeanRemote { }

在我的 Spring 项目中,我正在尝试访问该 bean。 ApplicationContext.xml如下—— <jee:remote-slsb id="adminRemote" jndi-name="java:global/FinalEJBProject- ejb/AdminOperationsBean!com.humber.its.n01131590.AdminOperationsBeanRemote" business-interface="com.humber.its.n01131590.AdminOperationsBeanRemote" cache-home="false" lookup-home-on-startup="false" refresh-home-on-connect-failure="true" />

在 Spring 控制器中 -

@Controller
public class AdminController {

private AdminOperationsBeanRemote adminRemote;

public void setAdminOperationsBeanRemote(AdminOperationsBeanRemote 
adminRemote) {
this.adminRemote = adminRemote;
}

public AdminOperationsBeanRemote getAdminOperationsBeanRemote() {
return adminRemote;
}

我总是查找失败 -

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.remoting.RemoteLookupFailureException: Failed to locate remote EJB [java:global/FinalEJBProject-ejb/AdminOperationsBean!com.humber.its.n01131590.AdminOperationsBeanRemote]; nested exception is javax.naming.NamingException: Lookup failed for 'java:global/FinalEJBProject-ejb/AdminOperationsBean!com.humber.its.n01131590.AdminOperationsBeanRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: FinalEJBProject-ejb]

谁能帮帮我,我这三天都在搞这个!

所以我终于想通了,在你的 ApplicationContext.xml 中使用不带后缀限定符名称的 JNDI 名称。

java:global/FinalEJBProject-ejb/AdminOperationsBean!com.humber.its.n01131590.AdminOperationsBeanRemote

java:global/FinalEJBProject-ejb/AdminOperationsBean

使用 ApplicationContext.xml 中的第二个 JNDI 名称如下 -

<jee:remote-slsb id="adminRemote" jndi-name="java:global/FinalEJBProject-ejb/AdminOperationsBean" business- interface="com.humber.its.n01131590.AdminOperationsBeanRemote" cache-home="false" lookup-home-on-startup="false" refresh-home-on-connect-failure="true" />