当前位置: 首页 > 知识库问答 >
问题:

Spring EJB 3 Jndi查找失败

孟嘉歆
2023-03-14

问题:似乎无法通过spring在Webphsere服务器中执行jndi查找EJB3。一直找不到我的jndi名称。我看不出我做错了什么。对于Websphere,您是否必须为jndi名称查找添加不同的内容?

堆栈溢出参考问题-EJB3注入Springbean

版本:

  1. Spring版本:4.1.2
  2. WebSphereServer版本:7.0.0.27

Spring错误:

创建名为'myLocalEjb'的bean时出错:调用init方法失败;嵌套异常是javax.naming.NameNotFoundExcture: Context: WMTN123456Node10Cell/节点/WMTN1234569Node10/服务器/服务器1,名称: ejb/myBean:名称myBean中的第一个组件未找到。[根异常org.omg.CosNaming。NamingContextPackage.IDL:omg.org/CosNaming/NamingContext/NotFound: 1.0]

Spring配置JNDI查找

<jee:local-slsb id="myLocalEjb"
                     jndi-name="ejb/myBean"
                     business-interface="spring.ejbtest.MyBeanLocal"
    </jee:local-slsb>

<bean id="targetPOJO" class="different.pojo.localPOJO">
    <property name="injectedEJB3" ref="myLocalEjb"/>
</bean>

WebSphere部署描述符

<ejb-jar id="ejb-jar_ID" version="3.0" metadata-complete="false" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" > 
 <display-name> MyEJB</display-name> 
 <enterprise-beans> 
 <session> 
 <ejb-name> myBean</ejb-name> 
 <mapped-name> ejb/myBean</mapped-name> 
 <business-local> spring.ejbtest.MyBeanLocal</business-local> 
 <ejb-class> spring.ejbtest.MyBean</ejb-class> 
 <session-type> Stateless</session-type> 
 <service-ref> 
 <service-ref-name> service/someOtherService</service-ref-name> 
 <service-interface> some.other.service.MyHTTPService</service-interface> 
 <service-ref-type> some.other.service.MyHTTPService</service-ref-type> 
 <wsdl-file> META-INF/wsdl/MyHTTPServiceExport.wsdl</wsdl-file> 
 <service-qname> http://company.foo/service/Service/:MyHTTPService</service-qname> 
 </service-ref> 
 </session> 
 </enterprise-beans> 
<assembly-descriptor/> 
 </ejb-jar>

共有1个答案

徐淳
2023-03-14

我花了一些时间才找到关于堆栈溢出的正确问题的答案。我对上面的示例感到困惑,认为它使用了映射名称作为jndi名称。相反,IBM有一个更长的JNDI查找命名上下文模式。

IBM文档:EJB JNDI命名约定

如何覆盖IBM默认命名并引用它-请参阅Ed Randall的答案。解释如何重写。堆栈溢出应答

Spring查找应为:

   <jee:local-slsb id="myLocalEjb"
                     jndi-name="ejblocal&#58;ejb/myBean"
                     business-interface="spring.ejbtest.MyBeanLocal"
    </jee:local-slsb>
 类似资料:
  • 如果有人能帮助我纠正代码中的问题,我将不胜感激。不知道我哪里错了。 当前我的persistence.xml包含

  • 在查找jdbc数据源的JNDI连接时,我遇到以下错误: javax。命名。ConfigurationException:无法完成“java:”名称上的JNDI操作,因为服务器运行时无法将该操作的线程与任何J2EE应用程序组件关联。当使用“java:”名称的JNDI客户端未在服务器应用程序请求的线程上执行时,可能会出现这种情况。确保J2EE应用程序不会在静态代码块或该J2EE应用程序创建的线程中对“

  • 问题内容: 我有一个表,带有2个重要列DocEntry,WebId 样本数据就像 现在我们可以在这里注意到,在WebId列中缺少S004。我们如何通过查询找到这些缺失的数字。 进一步说明: 如果网站ID之间缺少任何数字,则Web ID应按升序排列,例如S001,S002,S003,S004,S005。我没有任何单独的表格来输入可能的条目,因为这是不切实际的。我必须逐月查找丢失的数字,以每个月的开始

  • 我对que的查找失败了。que在wildfly中注册,并使用IronJacamar.xml进行配置 启动时的wildfly输出: ironjacamar配置: ra.xml: 我的例外:

  • 在使用资源引用从服务器上下文获取数据源连接时,我收到了JNDI查找错误。请注意,如果我不使用,则“查找”是有效的。 javax。命名。ConfigurationException:无法完成“java:”名称上的JNDI操作,因为服务器运行时无法将该操作的线程与任何J2EE应用程序组件关联。当使用“java:”名称的JNDI客户端未在服务器应用程序请求的线程上执行时,可能会出现这种情况。确保J2EE

  • 我是java EE的新手。最近我正在使用bean无状态处理一个项目,但我得到了以下错误 豆子: Servlet: javax.name.nameingException: 在 SerialContext[myEnv={java.name.factory.initial=com.sun.enterprise.name.name.impl.SerialInitContext, java.name.fa