CDI和JANDEX以及部署增强方法 - 未检测到速度差异

时间:2017-09-01 07:27:29

标签: weblogic wildfly weld

我正在打开这个帖子,因为我被要求这样做,在回复评论/问题时我在这里添加: Disable scanning of CDI beans in WAR

问题如下。 除了将jandex添加到他的构建pom以启用该功能之外,是否还需要采取任何特定的附加步骤? 我注意到在Wildfly 10.1.0.Final和Weblogic 12.2.1.2部署上使用jandex时没有部署速度差异。如果有的话,部署往往会慢一秒钟。

采取的步骤: 1.访问https://github.com/wildfly/jandex-maven-plugin

  1. 使用插件丰富多模块pom
  2. <plugin>
      <groupId>org.jboss.jandex</groupId>
      <artifactId>jandex-maven-plugin</artifactId>
      <version>1.0.5</version>
      <executions>
        <execution>
          <id>make-index</id>
          <goals>
            <goal>jandex</goal>
          </goals>
          <!-- phase is 'process-classes by default' -->
          <configuration>
            <!-- Nothing needed here for simple cases -->
          </configuration>
        </execution>
      </executions>
    </plugin>   
    
    1. 请注意,由于包含的Jandex.idx被写入META-INF /

    2. ,所有.jar文件的大小都相对较大
    3. 通过wildfly / weblogic console

    4. 部署WAR应用程序
    5. 部署时间完全没有差异。 在这一点上,相信我,应用程序对它所拥有的CDI bean的数量并不轻量级。 这是一个正在解决的问题,但作为一个短期解决方案,我想找到一个加速部署时间的quickfix,并希望Jandex产生一些影响。

    6. 相反它似乎有0差异,如果有任何使用jandex的部署总是需要额外花费一到两秒。

      也许是可能相关的其他信息。

      在wildfly和weblogic中,都可以通过调整来告诉较新版本的WELD不扫描所有已部署的.jar文件。 我们使用告诉焊接的设置只考虑其中包含beans.xml文件的jar文件。

      这些jar文件有bean-discover =&#34; all&#34; - 虽然CDI建议使用&#34; annoted&#34;加快分析时间和记忆足迹的方法(但这需要更大的重构)。

      请参阅http://weld.cdi-spec.org/news/2016/10/25/tip3-performance/

      简而言之: 是否还需要做一些事情来告诉容器考虑jandex索引。 或者只是Weld已经如此快速地分析已部署的类,预构建索引几乎没有区别,除了将部署加到几MB之外?

      • 我认为不是因为Jandex仍被提及作为部署速度改进的焊接提示,所以我很想我错过了一些配置。

      非常感谢你在这方面的任何帮助。

1 个答案:

答案 0 :(得分:1)

你是对的 - 这不会更快。它(很可能)在SE和Servlet中,但不一定在EE服务器中。

Weld SPI为集成商(例如WildFly和WebLogic)提供服务接口,他们可能会或可能不会选择使用它并使用类信息(例如来自Jandex)提供Weld。现在,我不知道WebLogic,但我猜他们根本不使用Jandex(毕竟它是WFLY子项目)。但是当我们谈论WildFly时,他们确实使用了Jandex,但是他们在部署期间“在运行中”创建了自己的Jandex索引,然后他们使用它而不是你可能在那里预先准备好的那个。这解释了你看到的额外的第二件事。

另一方面,在SE / Servlet环境中,Weld本身就是一个“集成商”,可以(并确实)确保使用Jandex。