Jakarta ee EE 6(玻璃鱼):有多少个容器?有多少单身汉?

Jakarta ee EE 6(玻璃鱼):有多少个容器?有多少单身汉?,jakarta-ee,singleton,java-ee-6,glassfish-3,ejb-3.1,Jakarta Ee,Singleton,Java Ee 6,Glassfish 3,Ejb 3.1,好的,这里仍在尝试理解基本的EE6概念。我希望这里有人能帮我 我用一个域运行GlassFishV3服务器Kukla。我部署了MyEEApp.ear,其中包含myeewbapp.war、MyEJBs.jar和MyUtilityLibrary.jar。我的ejbjar包含一个名为MySingleton的@singletonbean 然后我设置了另一个名为Fran的服务器,并部署了同一个EAR。我对第三台服务器也做了同样的操作,叫做Ollie 三个相同的EAR文件部署到三个相同的服务器(名称和IP地址

好的,这里仍在尝试理解基本的EE6概念。我希望这里有人能帮我

我用一个域运行GlassFishV3服务器Kukla。我部署了MyEEApp.ear,其中包含myeewbapp.war、MyEJBs.jar和MyUtilityLibrary.jar。我的ejbjar包含一个名为MySingleton的@singletonbean

然后我设置了另一个名为Fran的服务器,并部署了同一个EAR。我对第三台服务器也做了同样的操作,叫做Ollie

三个相同的EAR文件部署到三个相同的服务器(名称和IP地址除外)

下面是我的问题:

  • 在给定的服务器上,比如Kukla,我有多少个“容器”?耳朵只有一个容器吗?或者WAR和EJBJAR也有自己的容器吗
  • 第一个答案的实际后果是什么
  • 就这点而言,容器到底是什么
  • 我的WAR中的类可以使用@EJB注入来访问EJB jar中的bean吗,因为它们都是同一个EAR的一部分
  • 就这一点而言,普通的旧Java类可以使用@EJB注入,还是只对其他EJB有效
  • 我将创建多少个单例bean实例?每台服务器一台?还是总共一个?如果每台服务器一个,有没有办法保证整个集群中的“真正”单例
  • 在GlassFish中,我在哪里以及如何配置JNDI以查找资源?比如说,我是否可以将EJB jar从一台机器移动到另一台机器,并让web应用程序自动找到它
  • 可以为EJB bean配置负载平衡吗?如果是,怎么做
  • 这三场战争的情况如何?有没有一种方法可以配置负载平衡,以便将请求发送到(比如)利用率最低的机器上的实例
  • 我知道,有很多问题。对不起

    非常感谢您的帮助! 杰夫

    在给定的服务器上,比如Kukla,我有多少个“容器”?耳朵只有一个容器吗?或者WAR和EJBJAR也有自己的容器吗

    “容器”一词可能有点模糊,但我会这样说:一个完整的JavaEE应用服务器,如GlassFish,同时提供一个Web容器和一个EJB容器。部署EAR时,WAR将由Web容器部署和管理,EJB将由EJB容器部署和管理。下图说明了这一点(从中):

    不知何故——如果我把事情弄糊涂了,我已经感到很抱歉了——EAR也是一种(逻辑)容器,因为Java EE服务器将为每个EAR和EAR中的Java EE模块提供定义良好的隔离的类加载器层次结构。检查 来自的JavaEE应用程序中的类加载,这是对类加载的一个很好的介绍

    第一个答案的实际后果是什么

    这个问题很模糊,但。。。以下是一些例子:

    • 给定的应用程序服务器实例只能运行服务的一个子集(例如Web容器或EJB容器)
    • 您可以将EAR的各个模块部署到集群的不同实例(WAR部署到节点1、2,EJB-JAR部署到节点3、4、5、6)
    就这点而言,容器到底是什么

    用我的话说,这是一种为部署在其上的组件提供运行时环境和服务的东西。Tomcat是(Web)容器,OpenEJB是(EJB)容器,Spring是(IoC)容器

    有关更正式的“JavaEE”定义,请查看JavaEE教程的部分

    我的WAR中的类可以使用@EJB注入来访问EJB jar中的bean吗,因为它们都是同一个EAR的一部分

    是的,他们可以

    就这一点而言,普通的旧Java类可以使用@EJB注入,还是只对其他EJB有效

    在JavaEE6之前,只有EJB、servlet、过滤器、JSF托管bean等托管组件可以从注入中受益。但是使用JavaEE6,现在可以使用CDI()将任何类转换为托管bean。在这种情况下,你可以:

    @Inject MyEJB service
    
    但是您的POJO需要是CDI管理的bean

    我将创建多少个单例bean实例?每台服务器一台?还是总共一个?如果每台服务器一个,有没有办法保证整个集群中的“真正”单例

    该规范没有涵盖集群支持,但很可能大多数供应商都会使单例集群安全,就像有状态会话bean一样(或者您将无法共享状态,这将使它们不太有用)。但没有严格的回答

    请记住,市场上还没有JavaEE6集群感知容器(GlassFish3.1提供了基本的集群支持和应用程序版本控制,因为GF3.1还不是最终版本,最终版本是)

    在GlassFish中,我在哪里以及如何配置JNDI以查找资源?比如说,我是否可以将EJB jar从一台机器移动到另一台机器,并让web应用程序自动找到它

    创建
    InitialContext
    或提供
    jndi.properties
    时,使用非空构造函数传递环境设置。GlassFish附带了一个默认设置(在
    jndi properties.jar
    中),如果需要,可以将您的设置捆绑到应用程序中

    可以为EJB bean配置负载平衡吗?如果是,怎么做

    负载平衡由集群EJB获得的EJB客户端存根处理,默认策略通常是循环负载平衡。其他典型的策略包括基于权重的负载平衡、随机负载平衡(可能还有其他)。但我不知道GlassFish会支持哪些策略

    如前所述,除非您开始使用GlassFish 3.1的里程碑版本,否则还没有集群支持

    t呢