2016-02-12 59 views
1

問題:似乎無法在Spring Websphsere服務器中通過spring執行jndi查找EJB 3。繼續爲我的jndi名稱找不到。我沒有看到我有什麼錯。對於Websphere,你有什麼不同的jndi名稱查找?Spring EJB 3 Jndi查找失敗

Stack overflow Reference Question - EJB 3 injection into spring beans

版本:

  1. 春季版本:4.1.2
  2. WebSphere服務器版本:7.0.0.27

春錯誤:

創建名稱爲'myLocalEjb'的bean時出錯: 調用init方法失敗;嵌套異常是javax.naming.NameNotFoundException:上下文:WMTN123456Node10Cell/nodes/WMTN1234569Node10/servers/server1,名稱:ejb/myBean:未找到名稱爲myBean的第一個組件。 [根異常是org.omg.CosNaming.NamingContextPackage.NotFound: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

我花了一段時間才能得到的堆棧溢出正確的問題找到答案。我對上面的例子感到困惑,並認爲它使用映射名稱作爲jndi名稱。相反,IBM爲JNDI查找提供了更長的命名上下文模式。

IBM文檔:EJB JNDI Naming Convention

如何重寫IBM默認命名和引用它 - 見埃德·蘭德爾的答案。說明如何覆蓋。 Stack overflow answer

春查詢應該是:

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