【问题标题】:How to expose an EJB3.0 session ejb for a desktop app in Weblogic 11g如何在 Weblogic 11g 中为桌面应用程序公开 EJB3.0 会话 ejb
【发布时间】:2012-01-26 15:34:30
【问题描述】:

自:

  • @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 不公开 EJB 3.0 的 JNDI 名称是什么意思?您是否创建并部署了必要的 ejb-jar.xml?修复服务器端,然后通过在初始上下文中查找来使用桌面应用程序中的 EJB。
  • 问题可能是尽管 EJB 3 规范允许 EJB 通过 RMI/IIOP 公开,但它并不要求这样做,并且一些容器目前只提供本地 EJB(例如 JBoss AS7 )。也许 WebLogic 在同一个篮子里。
  • 是的,就是这样...... Weblogic 不会公开 EJB3.0 名称,因为规范不需要它。
  • WebLogic 11g 手册建议您可以远程访问 EJB:docs.oracle.com/cd/E17904_01/web.1111/e13719/…
  • @TomAnderson 这很有趣。你能指出规范的相关部分来支持你的话吗? JBoss AS7 不支持远程接口,因为它正式支持 Web 配置文件(并且它不需要实现远程接口 - 这是符合规范的)。但是,EJB 3.0 是 Java EE 5 的一部分,当时还没有 WebProfile / FullProfile 这样的术语。如果 Weblogic 不允许您访问远程接口 EJB,那么这个术语中“远程”部分的目的是什么?

标签: java ejb-3.0 weblogic11g


【解决方案1】:

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

这就是我的 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>

这就是 weblogic-ejb-jar.xml(在同一个目录中)所说的:

<wls:weblogic-enterprise-bean>
    <wls:ejb-name>Roly</wls:ejb-name>
<wls:jndi-name>Roly</wls:jndi-name>
</wls:weblogic-enterprise-bean>

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2016-01-19
    • 2011-02-06
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多