Primefaces 与 Wildfly 中的 Yasson 有啥关系吗?

Posted

技术标签:

【中文标题】Primefaces 与 Wildfly 中的 Yasson 有啥关系吗?【英文标题】:Does Primefaces have something with Yasson in Wildfly?Primefaces 与 Wildfly 中的 Yasson 有什么关系吗? 【发布时间】:2019-11-30 06:45:14 【问题描述】:

我有 Wildfly 14.0.1,由于 Yasson 中的错误(错误)是 RESTEASY 在序列化/反序列化时采用的 JSONB 的默认实现,我必须将 Yasson 的版本从 1.0.1 升级到 1.0.4 .

当我在 Wildfly 模块中更改版本时,日志中出现以下错误:

严重 [org.primefaces.application.exceptionhandler.PrimeExceptionHandler](默认任务 1)找不到基本名称消息的包,语言环境:java.util.MissingResourceException:找不到基本名称消息的包,语言环境 在 java.util.ResourceBundle.throwMissingResourceException (ResourceBundle.java:1573) 在 java.util.ResourceBundle.getBundleImpl (ResourceBundle.java:1396) 在 java.util.ResourceBundle.getBundle(ResourceBundle.java:1091) 在 com.sun.faces.util.MessageFactory.getMessage(MessageFactory.java:163) 在 com.sun.faces.util.MessageFactory.getMessage(MessageFactory.java:136) 在 com.sun.faces.util.MessageUtils.getExceptionMessage(MessageUtils.java:368) 在 com.sun.faces.application.ValidateComponentNesting.addOmittedMessage(ValidateComponentNesting.java:109) 在 com.sun.faces.application.ValidateComponentNesting.access$000(ValidateComponentNesting.java:36) 在 com.sun.faces.application.ValidateComponentNesting$ValidateFormNestingCallback.visit(ValidateComponentNesting.java:91) 在 com.sun.faces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:151) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1736) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1747) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1747) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1747) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1747) 在 com.sun.faces.application.ValidateComponentNesting.processEvent(ValidateComponentNesting.java:53) 在 javax.faces.event.SystemEvent.processListener(SystemEvent.java:147) 在 javax.faces.event.ComponentSystemEvent.processListener(ComponentSystemEvent.java:134) 在 com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2292) 在 com.sun.faces.application.ApplicationImpl.invokeListenersFor(ApplicationImpl.java:2265) 在 com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:351) 在 javax.faces.application.ApplicationWrapper.publishEvent(ApplicationWrapper.java:761) 在 com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:405) 在 com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:102) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) 在 com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:223) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:671) 在 io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) 在 io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) 在 [APPLICATION_CODE].filters.NoCacheFilter.doFilter(NoCacheFilter.java:36) 在 io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) 在 io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) 在 io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) 在 io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) 在 io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) 在 io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 在 org.wildfly.elytron.web.undertow.server.ElytronRunAsHandler.lambda$handleRequest$1(ElytronRunAsHandler.java:68) 在 org.wildfly.security.auth.server.FlexibleIdentityAssociation.runAsFunctionEx(FlexibleIdentityAssociation.java:103) 在 org.wildfly.security.auth.server.Scoped.runAsFunctionEx(Scoped.java:161) 在 org.wildfly.security.auth.server.Scoped.runAs(Scoped.java:73) 在 org.wildfly.elytron.web.undertow.server.ElytronRunAsHandler.handleRequest(ElytronRunAsHandler.java:67) 在 io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132) 在 io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) 在 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 在 io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) 在 io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) 在 io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) 在 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 在 org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) 在 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 在 org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68) 在 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 在 io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292) 在 io.undertow.servlet.handlers.ServletInitialHandler.access 100 美元(ServletInitialHandler.java:81) 在 io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138) 在 io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) 在 io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) 在 io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) 在 org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502) 在 org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502) 在 org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502) 在 org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502) 在 org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502) 在 io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272) 在 io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) 在 io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104) 在 io.undertow.server.Connectors.executeRootHandler(Connectors.java:360) 在 io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) 在 org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) 在 org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985) 在 org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487) 在 org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378) 在 java.lang.Thread.run(Thread.java:748)

我不明白 Yasson 和 Primefaces 之间的关系是什么,因为日志中没有任何内容。我知道 Yasson 1.0.1 没有出现这个错误。

【问题讨论】:

这里唯一与 PrimeFaces 相关的是异常处理程序,而不是实际的异常。 @Jasper 你能猜出错误的原因吗? 也许您的部署以某种方式损坏...您是否检查了导致此错误的所有“正常”明显原因? 【参考方案1】:

问题是我的应用程序引用了我的部署存档中没有的“消息”包。发生的事情是旧版本的 Yasson 有同名的包,我的部署选择了这个包,而新版本的 Yasson 重命名了这个包,这导致我的应用程序失败。

【讨论】:

如此有效地,您的应用程序之前无法正常工作,因为它提供了错误的标签;-) 可能使用更明确的捆绑路径 是的,正确的。我们没有使用这个“消息”包,它只是在项目开始时在那里声明的,这就是我们无法发现这个问题的原因:)

以上是关于Primefaces 与 Wildfly 中的 Yasson 有啥关系吗?的主要内容,如果未能解决你的问题,请参考以下文章

按下回车键,PrimeFaces禁用提交

Primefaces 中的 PF 功能有啥作用?

PrimeFaces 数据表中的屏蔽数字

Wildfly 在本地网络中独立

Primefaces 3.0.M2 SelectOneMenu Ajax 行为的问题

jboss-6.0.0.Final 与 wildfly-10.1.0.Final 中的每个用户数据源连接池(通过安全域)