[ 
https://issues.apache.org/jira/browse/TOMEE-4571?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18054875#comment-18054875
 ] 

Jonathan Gallimore commented on TOMEE-4571:
-------------------------------------------

Do I need to do anything special to make it work with a vanilla TomEE 10.x or 
9.x? Your patch applies cleanly to primefaces-test, but I get deployment errors 
on startup:

28-Jan-2026 15:11:37.476 INFO [main] 
org.jboss.weld.environment.servlet.EnhancedListener.onStartup WELD-ENV-001008: 
Initialize Weld using ServletContainerInitializer

28-Jan-2026 15:11:37.481 INFO [main] 
org.jboss.weld.bootstrap.WeldStartup.<clinit> WELD-000900: 6.0.4 (Final)

28-Jan-2026 15:11:37.510 INFO [main] 
org.jboss.weld.environment.deployment.discovery.DiscoveryStrategyFactory.create 
WELD-ENV-000020: Using jandex for bean discovery

28-Jan-2026 15:11:37.518 WARN [main] org.jboss.weld.xml.BeansXmlValidator.error 
WELD-001208: Error when validating null@5 against xsd. cvc-complex-type.3.2.2: 
Attribute 'bean-discovery-mode' is not allowed to appear in element 'beans'.

28-Jan-2026 15:11:37.571 INFO [main] 
org.jboss.weld.bootstrap.WeldStartup.startContainer WELD-000101: Transactional 
services not available. Injection of @Inject UserTransaction not available. 
Transactional observers will be invoked synchronously.

28-Jan-2026 15:11:37.614 SEVERE [main] 
jdk.internal.reflect.NativeMethodAccessorImpl.invoke Error deploying web 
application archive 
[/Users/jgallimore/tmp/apache-tomee-plume-9.1.3/webapps/pf.war]

 java.lang.IllegalStateException: Error starting child

 at 
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:729)

 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698)

 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)

 at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1027)

 at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:2001)

 at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)

 at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)

 at 
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)

 at 
java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)

 at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:828)

 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:478)

 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1708)

 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:320)

 at 
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)

 at 
org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)

 at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)

 at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:946)

 at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:886)

 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)

 at 
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)

 at 
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)

 at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)

 at 
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)

 at 
java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)

 at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)

 at 
org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:265)

 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)

 at 
org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)

 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)

 at 
org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)

 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)

 at org.apache.catalina.startup.Catalina.start(Catalina.java:795)

 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
Method)

 at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)

 at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

 at java.base/java.lang.reflect.Method.invoke(Method.java:569)

 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)

 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)

 Caused by: org.apache.catalina.LifecycleException: Failed to start component 
[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/pf]]

 at 
org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)

 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)

 at 
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)

 ... 37 more

 Caused by: org.jboss.weld.exceptions.DefinitionException: WELD-000409: 
Observer method for container lifecycle event can only inject BeanManager: 
[BackedAnnotatedMethod] public 
com.sun.faces.cdi.CdiExtension.afterBeanDiscovery(@Observes AfterBeanDiscovery, 
BeanManager)

 at com.sun.faces.cdi.CdiExtension.afterBeanDiscovery(CdiExtension.java:0)

  StackTrace:

 at 
org.jboss.weld.event.ObserverMethodImpl.checkObserverMethod(ObserverMethodImpl.java:238)

 at 
org.jboss.weld.event.ObserverMethodImpl.initialize(ObserverMethodImpl.java:293)

 at 
org.jboss.weld.bootstrap.ObserverInitializationContext.initialize(ObserverInitializationContext.java:38)

 at 
org.jboss.weld.bootstrap.ExtensionBeanDeployer.deployBean(ExtensionBeanDeployer.java:105)

 at 
org.jboss.weld.bootstrap.ExtensionBeanDeployer.deployBeans(ExtensionBeanDeployer.java:75)

 at 
org.jboss.weld.bootstrap.WeldStartup.startInitialization(WeldStartup.java:395)

 at 
org.jboss.weld.bootstrap.WeldBootstrap.startInitialization(WeldBootstrap.java:80)

 at 
org.jboss.weld.environment.servlet.WeldServletLifecycle.initialize(WeldServletLifecycle.java:181)

 at 
org.jboss.weld.environment.servlet.EnhancedListener.onStartup(EnhancedListener.java:66)

 at 
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5169)

 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)

 ... 38 more

> TomEE PLUME 10.1.x -  Decrease in performance (Factor 2 or more).
> -----------------------------------------------------------------
>
>                 Key: TOMEE-4571
>                 URL: https://issues.apache.org/jira/browse/TOMEE-4571
>             Project: TomEE
>          Issue Type: Bug
>          Components: TomEE Core Server
>    Affects Versions: 10.1.2
>         Environment: Primefaces 13.0.8 ; ojdbc11:21 , Oracle 19c database ; 
> gradle 8.7 build system. 
> PLUME edition of TomEE because we need eclipselink due to native queries and 
> DB package calls.
> TomEE 9.1.3 PLUME as-is (Mojarra Faces 3, Eclipselink 3) on OpenJDK17
> TomEE 10.1.2 PLUME as-is (Mojarra Faces 4, Eclipselink 4) on OpenJDK21
> related web.xml parameters overview
> jakarta.faces.PROJECT_STAGE = Production
> jakarta.faces.FACELETS_REFRESH_PERIOD  = -1
> jakarta.faces.STATE_SAVING_METHOD = server
> listener-class = com.sun.faces.config.ConfigureListener
> servlet-class = jakarta.faces.webapp.FacesServlet
> jakarta.faces.FACELETS_VIEW_MAPPINGS = .jsf;.xhtml
> jakarta.faces.PARTIAL_STATE_SAVING = true
> jakarta.faces.FACELETS_BUFFER_SIZE = 1024000 (for fileuploads)
> jakarta.faces.FACELETS_SKIP_COMMENTS = true
> primefaces.CLIENT_SIDE_LOCALISATION = true
> primefaces.SUBMIT = partial
>            Reporter: Martin A.
>            Assignee: Jonathan Gallimore
>            Priority: Major
>         Attachments: TOMEE-4571__Testcase.patch, 
> TOMEE-4571_test_project_timing.txt
>
>
> We recently migrated our PrimeFaces 13 application from TomEE9 to TomEE10 and 
> found a massive decrease in performance (Factor 2 or more).
> *Measurement*  : open dedicated page, then track its 3 XHR requests in 
> browser console
> TomEE10 + JDK21 : 4900 ms - 6800 ms - 2100 ms
> TomEE10 + JDK17 : 9200 ms - 8400 ms - 5700 ms
> TomEE 9 + JDK17 : 2700 ms - 3000 ms - 0800 ms
> TomEE 9 was > 2x faster, JDK might have a small impact, 21 is faster (as 
> expected)
> As suggested by BalusC, i did a comparison with MyFaces 4.03 from TomEE Plus 
> by replacing it in TomEE Plume and ran the same testcases 3x to have reliable 
> results:
> Measured times in ms, using p:lifecycle component (skipped phases < 10 
> ms).The big differences are in RESTORE_VIEW phase = 10x faster and 
> RENDER_RESPONSE phase = 2-3x faster
> h3. TomEE 9 / mojarra 3.0.5 (=our baseline)
> || UseCase || RESTORE_VIEW || INVOKE_APPLICATION || RENDER_RESPONSE  || 
> |"search"|130 | 630 | 850  |
> |"open dialog"|180| 1200 | 400  |
> h3. TomEE 10 / mojarra: 4.0.11
> || UseCase || RESTORE_VIEW || INVOKE_APPLICATION || RENDER_RESPONSE  || 
> |"search"| {color:#de350b}*650* {color} | 650 | 1100  |
> |"open dialog"| {color:#de350b}*750* {color} | 1200 | 400  |
> h3. TomEE 10 / myfaces: 4.0.3
> || UseCase || RESTORE_VIEW || INVOKE_APPLICATION || RENDER_RESPONSE  || 
> |"search"|65| 600 | 650  |
> |"open dialog"|60| 1200 | 150  |
> h3. TomEE 10 / mojarra 3.0.5 (just for debugging purpose)
> || UseCase || RESTORE_VIEW || INVOKE_APPLICATION || RENDER_RESPONSE  || 
> |"search"|*{color:#de350b}700{color}*| 650| 1200|
> |"open dialog"|*{color:#de350b}700{color}* | 1400| 700  |
> This was just a freaky try, knowing this is experimental, unsupported etc; by 
> reverting namespace and related changed only, same tests as before (3x,same 
> pc, same db)
> Summary: 
> * TomEE 10 mojarra 4 is 2x slower than TomEE9 mojarra 3
> * TomEE 10 myFaces 4 is 2-10x faster than Mojarra 4, depending on action. 
> * The idea that eclipselink / DB level is slower which turned out false. 
>  
> I checked all server.xml, tomee.xml changes, as well as the required 
> application changes in dependencies, namespaces, faces-config.xml, 
> beans.xml persistence.xml and found no hint yet what could cause such 
> decrease in performance. I can confirm that mojarra 3 and mojarra 4 are 
> (nearly) equal in performance, 
> in fact "Restore view" phase is slower in 4. 
> On the other hand, this now means: There must be some other things in TomEE 
> 10 that make it slower, e.g. libraries, config changes, undocumented 
> parameters, no-longer-in-use caches ... So further Ideas are highly welcome. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to