Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading popComponentFromEL(UIComponent.java:2084)上的线程卡住,导致cpu使用率高_Multithreading_Jsf_Binding - Fatal编程技术网

Multithreading popComponentFromEL(UIComponent.java:2084)上的线程卡住,导致cpu使用率高

Multithreading popComponentFromEL(UIComponent.java:2084)上的线程卡住,导致cpu使用率高,multithreading,jsf,binding,Multithreading,Jsf,Binding,我们在项目中使用动态绑定组件 由于UIComponent.popComponentFromEL(UIComponent.java:2084)上的多个线程卡住,导致CPU使用率较高 每个线程在UIComponent.java的第2084行引用相同的行号。下面是线程转储的片段 javax.faces.component.UIComponent.popComponentFromEL(UIComponent.java:2084) javax.faces.component.UIComponentBase

我们在项目中使用动态绑定组件

由于UIComponent.popComponentFromEL(UIComponent.java:2084)上的多个线程卡住,导致CPU使用率较高 每个线程在UIComponent.java的第2084行引用相同的行号。下面是线程转储的片段

javax.faces.component.UIComponent.popComponentFromEL(UIComponent.java:2084)
javax.faces.component.UIComponentBase.publishAfterViewEvents(UIComponentBase.java:2326)
javax.faces.component.UIComponentBase.publishAfterViewEvents(UIComponentBase.java:2314)
javax.faces.component.UIComponentBase.publishAfterViewEvents(UIComponentBase.java:2314)
javax.faces.component.UIComponentBase.publishAfterViewEvents(UIComponentBase.java:2314)
javax.faces.component.UIComponentBase.publishAfterViewEvents(UIComponentBase.java:2314)
javax.faces.component.UIComponentBase.publishAfterViewEvents(UIComponentBase.java:2314)
javax.faces.component.UIComponentBase.doPostAddProcessing(UIComponentBase.java:1986)
javax.faces.component.UIComponentBase.setParent(UIComponentBase.java:459)
javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2772)
javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2742)
com.sun.faces.facelets.tag.jsf.ComponentSupport.addComponent(ComponentSupport.java:527)
com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.addComponentToView(ComponentTagHandlerDelegateImpl.java:354)
com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.addComponentToView(ComponentTagHandlerDelegateImpl.java:337)
com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:222)
javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:135)
javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:96)
com.sun.faces.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:224)
javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:96)
com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:94)
com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:88)
com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:313)
com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:372)
com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:351)
com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:204)
com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:175)
com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:94)
com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:88)
com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:162)
com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:381)
com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:289)
com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:157)
com.ocpsoft.pretty.faces.application.PrettyViewHandler.restoreView(PrettyViewHandler.java:109)
com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:204)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:133)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:201)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:670)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470)
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395)
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316)
com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:137)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:748)
我尝试了下面答案中提供的解决方案,但是有很多页面我们已经实现了组件绑定,不可能更改每个页面的范围。 我从
UIComponent.java
文件中删除了下面的代码,它似乎正在工作。 这是你的电话号码

有人能详细说明
topComponent.popComponentFromEL(context)的用途吗
如果我对代码进行注释,会有什么副作用

根据JSF表单/GitHub问题跟踪器的建议,我还在web.xml中添加了
SERIALIZE\u SERVER\u STATE
参数,但没有成功

<context-param>
    <param-name>javax.faces.SERIALIZE_SERVER_STATE</param-name>
    <param-value>true</param-value>
</context-param>

javax.faces.SERIALIZE_服务器_状态
真的
另外,尝试更改JSF版本2.2,但问题仍然存在

环境:

  • Mojarra JSF 2.3.2
  • 爪哇8
  • Primefaces 6.1
  • Tomcat 8.5
  • 我从
    UIComponent.java
    文件中删除了下面的代码,它似乎正在工作。以下是代码片段:

    有人能详细说明
    topComponent.popComponentFromEL(context)的用途吗如果我删除该代码,会有什么副作用

    这段代码基本上管理JSF页面中的隐式EL表达式
    {component}
    。删除它将影响EL中
    #{component}
    的行为。例如,在以下构造中

    <h:someComponent id="foo">
        <h:someComponent id="bar" />
        #{component}
    </h:someComponent>
    
    当您将组件绑定分配给
    transient
    属性时,这将不起作用。即使你解决了这个问题,这也不会真正“解决”你的问题。它只会很快抛出一个
    notserializableeexception
    。当您刚刚打开JSF页面时,您已经遇到了一个“卡住线程”错误,而不是当多个用户打开JSF页面时。
    notserializableeexception
    应该向开发人员发出一个明确的警告,即开发人员正在做一些完全错误的事情


    另外,尝试更改JSF版本2.2,但问题仍然存在

    您面临的问题不是特定于JSF版本的问题。这是开发人员的错误。只需从不
    UIComponent
    指定为托管bean的属性,该bean的作用域比
    @RequestScoped
    更广。另见

    只需从
    UIComponent.java
    中删除这段代码,即可解决问题。您仍然会有一个非线程安全的JSF Web应用程序。当用户X修改某个特定组件的一个属性时,例如,
    禁用
    变为
    ,那么它也会影响所有其他用户,这将在一个不工作的webapp中结束

    我从
    UIComponent.java
    文件中删除了下面的代码,它似乎正在工作。以下是代码片段:

    有人能详细说明
    topComponent.popComponentFromEL(context)的用途吗如果我删除该代码,会有什么副作用

    这段代码基本上管理JSF页面中的隐式EL表达式
    {component}
    。删除它将影响EL中
    #{component}
    的行为。例如,在以下构造中

    <h:someComponent id="foo">
        <h:someComponent id="bar" />
        #{component}
    </h:someComponent>
    
    当您将组件绑定分配给
    transient
    属性时,这将不起作用。即使你解决了这个问题,这也不会真正“解决”你的问题。它只会很快抛出一个
    notserializableeexception
    。当您刚刚打开JSF页面时,您已经遇到了一个“卡住线程”错误,而不是当多个用户打开JSF页面时。
    notserializableeexception
    应该向开发人员发出一个明确的警告,即开发人员正在做一些完全错误的事情


    另外,尝试更改JSF版本2.2,但问题仍然存在

    您面临的问题不是特定于JSF版本的问题。这是开发人员的错误。只需从不
    UIComponent
    指定为托管bean的属性,该bean的作用域比
    @RequestScoped
    更广。另见


    只需从
    UIComponent.java
    中删除这段代码,即可解决问题。您仍然会有一个非线程安全的JSF Web应用程序。当用户X修改某个特定组件的一个属性时,例如,
    禁用
    变为
    ,那么它也会影响所有其他用户,这将在一个不工作的Web应用程序中结束。

    您可以添加显式Mojarra版本吗?““JSF2.3”只是一个api版本显式版本是JSF2.3.2@KukeltjeMojarra、MyFaces或JSF2.3.2API的其他实现?我们使用的是Mojarra实现@Selaron@Selaron:Mojarra已经可以从stacktrace中扣除。。。Divyesh:我希望BalusC(请求帮助并不“感激”顺便说一句)不会明确说明删除此代码是好是坏。代码存在是有原因的,因此在某些情况下删除可能会导致其他不清楚的问题。我希望他能说出在另一个Q/A中已经说过的话来纠正这个问题:“相应地修复代码,这样就不会发生这种情况。组件本身就是请求范围,可能绝对不会在多个请求之间共享。”你能添加显式的Mojarra版本吗“JSF2.3”只是一个api版本显式版本是JSF2.3.2@KukeltjeMojarra、MyFaces或JSF2.3.2API的其他实现?我们使用的是Mojarra实现@Selaron@Selaron:Mojarra已经可以从stacktrace中扣除。。。Divyesh:我希望BalusC(请求帮助并不“感激”顺便说一句)不会明确说明删除此代码是好是坏。代码存在是有原因的,所以删除可能会导致其他不清楚的pr
    <h:someComponent id="foo">
        <h:someComponent id="bar" />
        #{component}
    </h:someComponent>
    
    <context-param>
        <param-name>javax.faces.SERIALIZE_SERVER_STATE</param-name>
        <param-value>true</param-value>
    </context-param>