【发布时间】:2015-02-19 18:20:13
【问题描述】:
我试图在 spring 上下文中使用这个注入一个 EJB:
<jee:remote-slsb id="reportMisBeans" business-interface="com.nsdl.sam.app.reportmis.remote.SamReportMisRemote" jndi-name="SamReportMisRemote" environment-ref="env">
</jee:remote-slsb>
<util:properties id="env">
<prop key="java.naming.factory.initial">com.ibm.websphere.naming.WsnInitialContextFactory</prop>
<prop key="java.naming.provider.url">iiop://172.18.75.23:2811/</prop>
</util:properties>"
但是得到这个错误:
Caused by: javax.naming.NoInitialContextException: Cannot instantiate class: com.ibm.websphere.naming.WsnInitialContextFactory
[Root exception is java.lang.ClassNotFoundException: com.ibm.websphere.naming.WsnInitialContextFactory]
我已经将 IBM 瘦 EJB 客户端 jar 保存在 classpath.
【问题讨论】:
-
您是在 WebSphere 上运行它并尝试从同一个 JVM 注入 EJB,还是将您的应用程序放在某个第三方服务器上并尝试访问在 WebSphere 上运行的远程 EJB?
-
EJB 位于远程服务器上,即为什么我使用远程查找。
-
如果你的客户端服务器是WebSphere,那么类路径中不需要瘦客户端,如果是第三方除了ejb瘦客户端,你需要
com.ibm.ws.orb_8.5.0.jar。 -
我的客户端代码在tomcat容器上运行
-
我在 ibmwebsphere 中使用 springboot 注入 ejb 时遇到了同样的问题 [单独的应用程序,相同的容器,也尝试使用不同的容器]。我还尝试了各种查找/瘦客户端/无客户端等。我可以在 IBMWAS 中确认它不起作用(Jboss 工作!)。 IBM 支持和论坛没有用。他们通常会指示您不要使用 Spring!很棒的客户服务:)。我所做的是,将 ejb 公开为 web 服务,并使用 springboot 连接到该 web 服务。我必须经历所有这些循环,因为 Client-org 想要使用这个 IBM-beast。
标签: spring dependency-injection ejb websphere