Java 如何在Weblogic 11g中为桌面应用公开EJB3.0会话ejb

Java 如何在Weblogic 11g中为桌面应用公开EJB3.0会话ejb,java,ejb-3.0,weblogic11g,Java,Ejb 3.0,Weblogic11g,自: @EJB在桌面应用程序上不起作用,因为没有容器 Weblogic不会通过JNDI公开EJB(3.0)的名称 我已经有几天没有在官方文件中找到任何相关信息了 有人知道我如何从桌面应用程序中使用EJB吗 我得到提示,我必须修改web.xml。。。但是,还有什么web.xml,它们更多,至少有一些破坏了我的应用程序 澄清: 我有一个WebLogic服务器正在运行,而不是在该服务器上承载的EAR中公开一些EJB。具体地说,服务器没有公开EJB3.0会话bean的名称,而公开了一些其他EJB2.

自:

  • @EJB
    在桌面应用程序上不起作用,因为没有容器
  • Weblogic不会通过JNDI公开EJB(3.0)的名称
  • 我已经有几天没有在官方文件中找到任何相关信息了
有人知道我如何从桌面应用程序中使用EJB吗

我得到提示,我必须修改
web.xml
。。。但是,还有什么
web.xml
,它们更多,至少有一些破坏了我的应用程序

澄清: 我有一个WebLogic服务器正在运行,而不是在该服务器上承载的EAR中公开一些EJB。具体地说,服务器没有公开EJB3.0会话bean的名称,而公开了一些其他EJB2.1名称。 如何从我的桌面应用程序获取对服务器上托管的EJB3.0对象的引用?

进一步澄清: Weblogic没有在JNDI中公开EJB3.0的名称,因为EJB3.0的规范不需要它。

要回答我自己的问题(经过一番努力后得到),要通过远程接口在Weblogic 11g服务器中公开EJB3.0对象,必须采取以下步骤:

这是我的ejb-jar.xml对bean RolyBean的描述:

<enterprise-beans>       
    <session id="Session_Roly">
      <display-name>Roly</display-name>
      <ejb-name>Roly</ejb-name>
      <remote>com.medicon.server.RolyRemote</remote>
      <ejb-class>com.medicon.server.RolyBean</ejb-class>
      <session-type>Stateless</session-type>
    </session>
  </enterprise-beans>

罗利
罗利
com.medicon.server.RolyRemote
com.medicon.server.RolyBean
无国籍
这是weblogic-ejb-jar.xml(在同一目录中)所说的:


罗利
罗利

这两个部署描述符似乎是唯一需要通过JNDI指定EJB公开的两个地方。

什么意思是WebLogic不公开EJB3.0的JNDI名称?您是否创建并部署了必要的ejb-jar.xml?修复您的服务器端,然后通过在初始上下文中查找来使用桌面应用程序中的EJB。问题可能是,尽管EJB3规范允许通过RMI/IIOP公开EJB,但它并不需要它,而且一些容器目前仅提供本地EJB(例如JBoss AS7)。也许WebLogic也在同一个篮子里。是的,就是这样。。。。Weblogic不公开EJB3.0名称,因为规范不需要它。Weblogic 11g手册建议您可以远程访问EJB:@TomAnderson这很有趣。你能指出说明书的相关部分来支持你的话吗?JBossAS7不支持远程接口,因为它正式支持Web配置文件(并且不需要实现远程接口,这符合规范)。然而,EJB3.0是JavaEE5的一部分,当时没有WebProfile/FullProfile这样的术语。如果Weblogic不允许您访问远程接口EJB,那么这个术语中“远程”部分的目的是什么?
<wls:weblogic-enterprise-bean>
    <wls:ejb-name>Roly</wls:ejb-name>
<wls:jndi-name>Roly</wls:jndi-name>
</wls:weblogic-enterprise-bean>