为什么 WildFly 10 + JSF 2.3 无法与 Omnifaces 2.6.1 配合使用?

2024-01-01

我一直在尝试在 Wildfly 10 上使用 jsf 2.3、primefaces 6 和omnifaces 2.6.1 启动并运行一个应用程序。

我已经拆分了 jsf 2.3(api 和 impl)并完成了 WildFly 的设置。

应用程序无需omnifaces 2.6.1即可顺利启动。但是当我将omnifaces jar 添加到应用程序类路径(/lib)时,这个jar在启动时失败,给出了下一个异常:

13:21:52,024 SEVERE [javax.enterprise.resource.webcontainer.jsf.config] (ServerService Thread Pool -- 78) Critical error during deployment: : com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:457)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:237)
at io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:187)
at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:200)
at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:171)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:234)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:100)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
    Caused by: java.lang.UnsupportedOperationException
at javax.faces.application.Application.getSearchExpressionHandler(Application.java:2001)
at javax.faces.application.ApplicationWrapper.getSearchExpressionHandler(ApplicationWrapper.java:815)
at com.sun.faces.config.processor.ApplicationConfigProcessor.setSearchExpressionHandler(ApplicationConfigProcessor.java:738)
at com.sun.faces.config.processor.ApplicationConfigProcessor.process(ApplicationConfigProcessor.java:382)
at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:155)
at com.sun.faces.config.processor.LifecycleConfigProcessor.process(LifecycleConfigProcessor.java:138)
at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:155)
at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:246)
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:443)
... 21 more
    13:21:52,031 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 78) MSC000001: Failed to start service jboss.undertow.deployment.default-server.default-host./: org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./: java.lang.RuntimeException: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:85)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
    Caused by: java.lang.RuntimeException: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:236)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:100)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82)
... 6 more
    Caused by: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:315)
at io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:187)
at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:200)
at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:171)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:234)
... 8 more
    Caused by: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:457)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:237)
... 20 more
    Caused by: java.lang.UnsupportedOperationException
at javax.faces.application.Application.getSearchExpressionHandler(Application.java:2001)
at javax.faces.application.ApplicationWrapper.getSearchExpressionHandler(ApplicationWrapper.java:815)
at com.sun.faces.config.processor.ApplicationConfigProcessor.setSearchExpressionHandler(ApplicationConfigProcessor.java:738)
at com.sun.faces.config.processor.ApplicationConfigProcessor.process(ApplicationConfigProcessor.java:382)
at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:155)
at com.sun.faces.config.processor.LifecycleConfigProcessor.process(LifecycleConfigProcessor.java:138)
at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:155)
at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:246)
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:443)
... 21 more

    13:21:52,059 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 2) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "processmanagement-1.0-SNAPSHOT")]) - failure description: {
"WFLYCTL0080: Failed services" => {"jboss.undertow.deployment.default-server.default-host./" => "org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./: java.lang.RuntimeException: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
    Caused by: java.lang.RuntimeException: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
    Caused by: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
    Caused by: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
    Caused by: java.lang.UnsupportedOperationException"},
"WFLYCTL0412: Required services that are not installed:" => ["jboss.undertow.deployment.default-server.default-host./"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => undefined}
    13:21:52,066 ERROR [org.jboss.as.server] (management-handler-thread - 2) WFLYSRV0021: Deploy of deployment "processmanagement-1.0-SNAPSHOT.war" was rolled back with the following failure message: 
    {"WFLYCTL0080: Failed services" => {"jboss.undertow.deployment.default-server.default-host./" => "org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./: java.lang.RuntimeException: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
Caused by: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
Caused by: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
Caused by: java.lang.UnsupportedOperationException"},
"WFLYCTL0412: Required services that are not installed:" => ["jboss.undertow.deployment.default-server.default-host./"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => undefined}

堆栈跟踪显示方法 javax.faces.application.Application.getSearchExpressionHandler 正在进入“else”块内部

    public SearchExpressionHandler getSearchExpressionHandler() {

    if (defaultApplication != null) {
        return defaultApplication.getSearchExpressionHandler();
    } else {
        throw new UnsupportedOperationException();
    }

    }

这显然意味着 defaultApplicatoin 为空。有什么理由吗?我是否缺少omnifaces 2.6.1/jsf 2.3 的任何重要配置?

提前致谢!


这是 WildFly 中的一个错误。我已经举报了:http://issues.jboss.org/browse/WFLY-8815 http://issues.jboss.org/browse/WFLY-8815.

就这一点而言,它的内置WeldApplication具有硬编码的 JSF 2.2 依赖项。它实际上应该是从 JSF 扩展而来的javax.faces.application.ApplicationWrapper http://docs.oracle.com/javaee/7/api/javax/faces/application/ApplicationWrapper.html其中已经预定义了所有默认委托方法,例如getSearchExpressionHandler(),但是 JSF 2.2 并列WeldApplication没有那个,因此你遇到了例外。

OmniFaces 并没有错,它只是一个触发因素。对于任何其他具有自定义的 JSF 目标库,您都会遇到完全相同的问题javax.faces.application.Application执行。

如果无法将 JSF 降级回 2.2,并且您没有耐心等待 WildFly 人员修复它,那么您可以如下修改 WildFly 修复其损坏的问题WeldApplication.

  1. Find 源代码 http://grepcode.com/file_/repository.jboss.org/nexus/content/repositories/releases/org.wildfly/wildfly-jsf-injection/9.0.1.Final/org/jboss/as/jsf/injection/weld/WeldApplication.java/?v=source of org.jboss.as.jsf.injection.weld.WeldApplication(注:因此not org.jboss.weld.environment.servlet.jsf.WeldApplication确实有这个bugalready http://grepcode.com/file_/repo1.maven.org/maven2/org.jboss.weld.servlet/weld-servlet-core/2.2.15.Final/org/jboss/weld/environment/servlet/jsf/WeldApplication.java/?v=source固定的!这仅适用于 Tomcat 之类的东西)。

  2. 调整类签名

    public class WeldApplication extends ForwardingApplication {
    

    to

    public class WeldApplication extends ApplicationWrapper {
    
  3. 替换构造函数中的第一行

    this.application = application;
    

    by

    super(application);
    
  4. 删除这个方法

    @Override
    protected Application delegate() {
        init();
        return application;
    }
    
  5. 替换两次出现的

    application.getExpressionFactory()
    

    by

    getWrapped().getExpressionFactory()
    
  6. 编译它,你会得到两个类:WeldApplication.class and WeldApplication$AdjustableELResolver.class.

  7. Go to /modules/system/layers/base/org/jboss/as/jsf-injection/mainWildFly 安装的文件夹。

  8. Unzip wildfly-jsf-injection-10.1.0.Final.jar there.

  9. 浏览并删除所有三个WeldApplication***.class文件在/org/jboss/as/jsf/injection/weld解压后的 JAR 的子文件夹,并将两个新编译的文件放入其中。

  10. 将文件夹重新压缩到一个新的wildfly-jsf-injection-10.1.0.Final.jar,覆盖旧的。

  11. Profit.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 WildFly 10 + JSF 2.3 无法与 Omnifaces 2.6.1 配合使用? 的相关文章

随机推荐

  • 当 cfhttp 上 throwonerror=true 时如何获取 cfhttp.filecontent ?

    我使用以下命令进行 REST 服务调用cfhttp与throwonerror属性设置为 true 当我使用 try catch 语句捕获错误时 我似乎找不到一种方法来输出 REST 服务调用尝试返回的错误 该错误将驻留在cfhttp fil
  • 如何从 C# 应用程序调用 docker run

    我有一个 WPF 应用程序 在处理文件时需要使用 docker 进程 docker 容器构建在盒子上 目前在使用 WPF 应用程序处理文件后 用户必须启动命令提示符并输入 docker run it rm v folderdedirect
  • 尝试一下,catch似乎不起作用

    我有以下代码 我认为它可以让我捕获错误 而不是生成错误 写出 发生错误 不幸的是 它仍然显示错误 无法重新启动计算机 访问被拒绝 我知道为什么会发生这种情况 但我希望能够捕获错误并重新格式化它 我究竟做错了什么 try Restart Co
  • 使用 Hibernate 和 JPA 映射 Map

    我尝试以下映射 ElementCollection private Map
  • 使用 iTextSharp 从现有 PDF 中读取 XMP

    如何使用 iTextSharp 从现有 PDF 文件中读取 XMP 我对 itextSharp 非常无知 但这对我来说很有效 PdfReader pdf new PdfReader fileName string metadataXml S
  • HTML + Javascript 渲染器输出 HTML 或纯文本?

    如果我使用 String plain Html fromHtml html toString 渲染简单的 html 其中包含 any plain vanila HTML goes here 一切都美好而花花公子 但是 如果该页面包含大量 J
  • Java 如何使 JFrame 作为最大化窗口启动

    我想知道如何使 java JFrame 最大化 我不希望它是全屏的 周围没有窗口 我只是希望它像普通程序 例如网络浏览器 一样启动 我已经知道如何使用 Dimension screenSize Toolkit getDefaultToolk
  • Safari - 当选项卡位于后台时,HTML5 音频不会播放

    我有一个反应应用程序 它使用反应声音 基本上是 HTML5 音频 在触发新通知时播放声音 我希望当选项卡在 Safari 中处于后台时播放此声音 但这似乎不起作用 当选项卡位于前台时 声音会播放 有谁知道这个问题的解决方法 None
  • Chrome 中的 .blur 和 .onblur

    更新了没用 http jsfiddle net xvepL 4 http jsfiddle net xvepL 4 让我有点抓狂 Chrome 不使用 blur 仅适用于 onblur 但其他浏览器使用 blur 有没有办法解决这个问题 这
  • 自动热键 3 次点击 = 音量静音

    在 autohotkey 中 我试图做到这一点 以便当我按下鼠标左键 3 次并延迟 10 毫秒它变成音量静音 LButton if Send Volume Mute else Send LButton Return Use A TickCo
  • Pytest 仅运行具有特定标记属性的测试

    我在用着 pytest mark为了唯一地标识特定的测试 因此我创建了自定义标记 pytest mark key 我这样使用它 pytest mark key test 001 def test simple self self passi
  • 在 PHP 中使用heredoc有什么好处? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Jquery 如果单选按钮被选中

    可能的重复 检查特定单选按钮是否已选中 https stackoverflow com questions 2195125 check of specific radio button is checked 我目前有这 2 个单选按钮 以便
  • nginx 和带有代理传递的尾部斜杠

    我对 nginx 1 4 1 使用以下配置 server listen 8000 server name correct name gr location test register proxy set header X Forwarded
  • WPF 按钮图标被镜像,为什么?

    当按如下方式定义图像时 此按钮看起来不错 请参见屏幕截图 请注意 带有字母 T 的盾形图标已正确显示
  • getnameinfo() - 反向 DNS 查找(IP 地址到主机名)C/C++

    对于 IPAddress 66 249 68 9 dig x 正确地说 crawl 66 249 68 9 googlebot com 我可爱的程序声称它是 ip68 9 0 0 ri ri cox net 我不在乎我最终是否会采用类似于下
  • 获取内存制造商

    有谁知道如何以编程方式检索 RAM 内存制造商 Thanks 现代 RAM 芯片上有一个附加的 EPROM 其中包含有关 RAM 的大量信息 其标准是 SPD 即串行存在检测 至少某些版本的 SPD 包含 JDEC 制造商代码 Look a
  • VBA“编译错误:语句在类型块之外无效”

    我正在 Excel 2010 中运行 VBA 宏并进行大量计算 因此数据类型非常重要 以尽可能缩短宏执行时间 我的优化想法是让用户选择所有数字将被声明为什么数据类型 同时指出每种数据类型的优缺点 准确性 灵活性和CPU密集度 宏执行时间之间
  • 为什么 matplotlib.pyplot.imshow 改变它的轴?

    我尝试在不同的子图中绘制图像 但由于某种原因 图像的轴在绘制时发生变化 为了演示这一点 在下面的示例中 我将图像绘制在 4 2 子图网格中 并不断检查第一张图像的轴是否保持不变 import matplotlib pyplot as plt
  • 为什么 WildFly 10 + JSF 2.3 无法与 Omnifaces 2.6.1 配合使用?

    我一直在尝试在 Wildfly 10 上使用 jsf 2 3 primefaces 6 和omnifaces 2 6 1 启动并运行一个应用程序 我已经拆分了 jsf 2 3 api 和 impl 并完成了 WildFly 的设置 应用程序