有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用EJB3中的客户机jar和设计模式

我是EJB3新手,对谷歌没有给出满意答案的一些疑问感到困惑

我正在尝试创建一个框架,其中包含一些基类和一些实用方法,我的其他应用程序可以使用这些方法。所有应用程序都将部署在同一台服务器上

当我试图在eclipse中创建一个新的EJB3.0项目时,它会询问我是否也想创建一个客户机jar。这个客户端jar有什么用途?我的ejbmodule是作为EAR文件的一部分添加的。那么我真的需要这个客户端jar吗? 我需要创建本地和远程接口吗?或者只是远程接口就可以了

我决定在名为projCommon的项目中保留所有接口,并在projApps中保留bean定义。bean类实现的远程接口在projCommon中。所以projApps依赖于projCommon

我计划使用projCommon中定义的委托方法来调用bean类。这意味着projCommon也依赖于projApps,rt?并导致循环依赖

EJB是如何直接注入的

如果你能解释一下我的疑问,那将非常有帮助


共 (1) 个答案

  1. # 1 楼答案

    When I'm trying to create a new EJB 3.0 project in eclipse, it asks if I want to create a client jar also. What purpose does this client jar serve?

    EJB客户机JAR文件是可选的JAR文件,它可以包含客户机程序使用EJB JAR文件中包含的企业bean的客户机视图所需的所有类文件。如果您决定不为EJB模块创建客户机JAR文件,那么所有客户机接口类都将在EJB JAR文件中

    My ejbmodule is added as a part of the EAR file. So do I really need this client jar?

    您并不真的需要EJB客户机,它只是提供了一个更容易的打包来使用来自客户机的EJB

    Do I need to create both local and remote interfaces? Or just remote interfaces will do?

    如果所有EJB都在同一个EAR中,则可以使用本地接口,如果不需要,则可以使用远程接口。本地接口效率更高,调用是通过引用完成的
    一些容器(如WebSphere)将在运行时为您优化这一点,并在可能的情况下自动调用本地接口

    I decided to keep all the interfaces in a project called projCommon and the bean definitions in projApps. The remote interfaces which the bean classes implement are in projCommon. So projApps is dependent on projCommon.

    我会按职能领域组织我的项目。在功能区域内进行本地调用,在功能区域外进行远程调用,这允许您稍后拆分要部署在不同服务器上的功能以扩展它。它还使代码更加模块化。这也避免了任何循环依赖

    How exactly are EJB's directly injected?

    它如何工作并不重要,这将由容器完成。J2EE的全部目的是抽象出如何实现

    根据http://www.developer.com/print.php/3650661

    EJB3容器提供了将各种类型的资源注入无状态会话bean的工具。通常,为了执行用户任务或处理来自客户端应用程序的请求,会话bean中的业务方法需要一种或多种类型的资源。这些资源可以是其他会话bean、数据源或消息队列

    无状态会话bean试图使用的资源可以使用注释或部署描述符注入。可以通过注释实例变量或注释setter方法来获取资源