源自 deltaspike 的 wildfly 11 部署中的拦截器警告

Interceptor warnings in wildfly 11 deployment originating from deltaspike

在 Wildfly 11 中部署我的 test.war 期间,我看到了一些警告:

09:45:32,714 WARN  [org.jboss.weld.Validator] (MSC service thread 1-4) WELD-001478: Interceptor class org.apache.deltaspike.core.impl.throttling.ThrottledInterceptor is enabled for the application and for the bean archive test.war/WEB-INF/lib/deltaspike-core-impl-1.8.1.jar. It will only be invoked in the @Priority part of the chain.
09:45:32,714 WARN  [org.jboss.weld.Validator] (MSC service thread 1-4) WELD-001478: Interceptor class org.apache.deltaspike.core.impl.lock.LockedInterceptor is enabled for the application and for the bean archive test.war/WEB-INF/lib/deltaspike-core-impl-1.8.1.jar. It will only be invoked in the @Priority part of the chain.
09:45:32,715 WARN  [org.jboss.weld.Validator] (MSC service thread 1-4) WELD-001478: Interceptor class org.apache.deltaspike.core.impl.future.FutureableInterceptor is enabled for the application and for the bean archive test.war/WEB-INF/lib/deltaspike-core-impl-1.8.1.jar. It will only be invoked in the @Priority part of the chain.
09:45:32,722 WARN  [org.jboss.weld.Validator] (MSC service thread 1-4) WELD-001478: Interceptor class org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor is enabled for the application and for the bean archive test.war/WEB-INF/lib/deltaspike-jpa-module-impl-1.8.1.jar. It will only be invoked in the @Priority part of the chain.
09:45:32,728 WARN  [org.jboss.weld.Validator] (MSC service thread 1-4) WELD-001478: Interceptor class org.apache.deltaspike.proxy.util.EnableInterceptorsInterceptor is enabled for the application and for the bean archive test.war/WEB-INF/lib/deltaspike-proxy-module-api-1.8.1.jar. It will only be invoked in the @Priority part of the 

这似乎是因为在我的 test.war 中的每个 beans.xml 中现有的 deltaspike 罐子中有一些存在拦截器,例如 deltaspike-core-impl-1.8.1.jar:

<class>org.apache.deltaspike.core.impl.throttling.ThrottledInterceptor</class>
<class>org.apache.deltaspike.core.impl.lock.LockedInterceptor</class>
<class>org.apache.deltaspike.core.impl.future.FutureableInterceptor</class>

是否可以从 beans.xml 中删除拦截器而不造成任何伤害?

在 Wildfly 11 中使用 CDI 1.2,我认为不再需要在 beans.xml 中明确列出拦截器。

至少似乎存在一些(小)问题应该由 deltaspike 开发人员调查?

这是 DeltaSpike 讨厌的黑魔法 - 他们试图保持 CDI 1.0 兼容,这意味着他们不能使用 @Priority(后来引入 CDI 1.1)作为启用他们的 interceptors/decorators/alternatives 全球。为了让它工作,他们必须在他们的 JAR 中包含一个 beans.xml 并在每个存档的基础上包含 enable it there

但这还不是全部,他们随后通过使用 an extension which promotes all their interceptors to globally enabled 来解决 @Priority 限制(例如 好像 他们有 @Priority).

现在,我不确定您是否可以删除它 - 您可以轻松地尝试看看它们是否仍然有效。但我不会碰它,因为DS在这方面似乎很脆弱。

至于 Weld 警告 - 这是非常无害的,Weld 只是告诉你在处理所有拦截器时:

  • 它找到的那些在 beans.xml 中列出(每个 bean 存档启用)
  • 通过扫描类路径识别的那些;寻找 @Interceptor + @Priority(全局启用)
  • 以及最终通过扩展启用的那些(全局启用)

发现某些拦截器是双向启用的,尽管如此,它们只会被调用一次。

总而言之,您无需执行任何操作,它应该仍然适合您。