无法访问 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" />
我的 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" />