Git Product home page Git Product logo

quarkus-faces's Introduction


License Discord Chat Java CI with Maven Quarkus GitHub Sponsors

If you like this project, please consider supporting me ❤️

GitHub Sponsor PayPal

Goals


The main goal was to take an out of the box Faces (formerly JSF) application (PrimeFaces Showcase) and run it in both a Java EE Server and in Quarkus. Some addition goals:

  • See how much we can improve performance by incorporating various optimization tricks for JSF applications
  • See if Quarkus is a viable option for Faces and migrating to Docker containers

Environment


  • OpenJDK 17.0.5
  • JBoss Wildfly 18.0.1
  • Quarkus 2.16.3.Final
  • JSF Production Mode
  • Intel(R) Core(TM) i7-8750H CPU @2.21 GHz 16GB RAM

Optimizations


Metrics


The following client and server metrics were captured while hitting the exact same page /datatable/crud.xhtml Using Incognito Mode and pressing CTRL+F5 so it forced the browser to load all resources from the server with nothing cached.

Metric WildFly EE Quarkus (DEV) Quarkus (JVM) Quarkus (GraalVM)
Package Size 48.5 MB WAR N/A 91 MB 206 MB
Cold Startup 10.3 s 8.092 s 3.847 s 0.035 s
Memory Used 140 MB 113 MB 21 MB 13.6 MB
HTTP Requests 80 80 61 61
Resource Size 2.4 MB 2.4 MB 2.4 MB 2.4 MB
Transferred Size 2.4 MB 2.4 KB 888 KB 888 KB
DOM Loaded 1150 ms 1750 ms 918 ms 580 ms
Lighthouse Score 59/100 72/100 97/100 98/100
First Paint 2.4 s 2.3 s 0.8 s 0.8 s
Speed Index 2.4 s 2.3 s 1.0 s 0.8 s
Time To Interactive 3.9 s 2.3 s 0.9 s 0.8 s
Largest Paint 2.7 s 2.6 s 1.1 s 1.0 s

Development


To run the example in Dev mode:

git clone https://github.com/melloware/quarkus-faces
cd quarkus-faces
mvn quarkus:dev

Then open your web browser to http://localhost:8081/

Production


To run the example in HotSpot Production mode:

git clone https://github.com/melloware/quarkus-faces
cd quarkus-faces
mvn clean package
java -jar target/quarkus-app/quarkus-run.jar

Then open your web browser to http://localhost:8081/

Docker JVM


Builds a Docker image running as a standard JVM application.

mvn clean package -Ddocker
docker run -i --rm -p 8081:8081 melloware/quarkus-faces:latest

Docker Native


Builds a native Docker image running as a GraalVM (Mandrel) application.

mvn -Pnative
docker run -i --rm -p 8081:8081 melloware/quarkus-faces:${version}

Known Issues


We have a WIKI page where we are keeping track of known issues while developing with Quarkus/MyFaces/PrimeFaces. Please feel free to contribute to that page if you find anything you think others should know!

quarkus-faces's People

Contributors

dependabot[bot] avatar mabakach avatar melloware avatar ramiswailem avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

quarkus-faces's Issues

Not compatible with quarkus-spring-data-jpa successfully

I added quarkus spring data jpa dependency

<dependency> 
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-spring-data-jpa</artifactId>
</dependency>

the exception list below:

2023-06-11 08:56:07,232 WARN  [io.qua.agr.dep.AgroalProcessor] (build-22) The Agroal dependency is present but no JDBC datasources have been defined.
2023-06-11 08:56:09,741 WARN  [io.qua.dat.dep.dev.DevServicesDatasourceProcessor] (build-35) Unable to determine a database type for default datasource
2023-06-11 08:56:09,744 WARN  [io.qua.hib.orm.dep.HibernateOrmProcessor] (build-35) Hibernate ORM is disabled because no JPA entities were found
2023-06-11 08:56:10,116 INFO  [io.qua.dep.dev.IsolatedDevModeMain] (main) Attempting to start live reload endpoint to recover from previous Quarkus startup failure
2023-06-11 08:56:10,660 ERROR [io.qua.dep.dev.IsolatedDevModeMain] (main) Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step io.quarkus.arc.deployment.ArcProcessor#registerBeans threw an exception: jakarta.enterprise.inject.spi.DefinitionException: Bean class org.primefaces.showcase.view.data.tree.LazyLoadingView declares multiple scope type annotations: jakarta.faces.view.ViewScoped, jakarta.inject.Singleton
	at io.quarkus.arc.processor.Beans.multipleScopesFound(Beans.java:324)
	at io.quarkus.arc.processor.Beans$ClassBeanFactory.create(Beans.java:1261)
	at io.quarkus.arc.processor.Beans.createClassBean(Beans.java:52)
	at io.quarkus.arc.processor.BeanDeployment.findBeans(BeanDeployment.java:1121)
	at io.quarkus.arc.processor.BeanDeployment.registerBeans(BeanDeployment.java:266)
	at io.quarkus.arc.processor.BeanProcessor.registerBeans(BeanProcessor.java:142)
	at io.quarkus.arc.deployment.ArcProcessor.registerBeans(ArcProcessor.java:443)
	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:568)
	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:909)
	at io.quarkus.builder.BuildContext.run(BuildContext.java:282)
	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
	at java.base/java.lang.Thread.run(Thread.java:833)
	at org.jboss.threads.JBossThread.run(JBossThread.java:501)

	at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:335)
	at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:252)
	at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:60)
	at io.quarkus.deployment.dev.IsolatedDevModeMain.firstStart(IsolatedDevModeMain.java:86)
	at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:447)
	at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:59)
	at io.quarkus.bootstrap.app.CuratedApplication.runInCl(CuratedApplication.java:138)
	at io.quarkus.bootstrap.app.CuratedApplication.runInAugmentClassLoader(CuratedApplication.java:93)
	at io.quarkus.deployment.dev.DevModeMain.start(DevModeMain.java:131)
	at io.quarkus.deployment.dev.DevModeMain.main(DevModeMain.java:62)
Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step io.quarkus.arc.deployment.ArcProcessor#registerBeans threw an exception: jakarta.enterprise.inject.spi.DefinitionException: Bean class org.primefaces.showcase.view.data.tree.LazyLoadingView declares multiple scope type annotations: jakarta.faces.view.ViewScoped, jakarta.inject.Singleton
	at io.quarkus.arc.processor.Beans.multipleScopesFound(Beans.java:324)
	at io.quarkus.arc.processor.Beans$ClassBeanFactory.create(Beans.java:1261)
	at io.quarkus.arc.processor.Beans.createClassBean(Beans.java:52)
	at io.quarkus.arc.processor.BeanDeployment.findBeans(BeanDeployment.java:1121)
	at io.quarkus.arc.processor.BeanDeployment.registerBeans(BeanDeployment.java:266)
	at io.quarkus.arc.processor.BeanProcessor.registerBeans(BeanProcessor.java:142)
	at io.quarkus.arc.deployment.ArcProcessor.registerBeans(ArcProcessor.java:443)
	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:568)
	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:909)
	at io.quarkus.builder.BuildContext.run(BuildContext.java:282)
	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
	at java.base/java.lang.Thread.run(Thread.java:833)
	at org.jboss.threads.JBossThread.run(JBossThread.java:501)

	at io.quarkus.builder.Execution.run(Execution.java:123)
	at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:79)
	at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:160)
	at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:331)
	... 9 more
Caused by: jakarta.enterprise.inject.spi.DefinitionException: Bean class org.primefaces.showcase.view.data.tree.LazyLoadingView declares multiple scope type annotations: jakarta.faces.view.ViewScoped, jakarta.inject.Singleton
	at io.quarkus.arc.processor.Beans.multipleScopesFound(Beans.java:324)
	at io.quarkus.arc.processor.Beans$ClassBeanFactory.create(Beans.java:1261)
	at io.quarkus.arc.processor.Beans.createClassBean(Beans.java:52)
	at io.quarkus.arc.processor.BeanDeployment.findBeans(BeanDeployment.java:1121)
	at io.quarkus.arc.processor.BeanDeployment.registerBeans(BeanDeployment.java:266)
	at io.quarkus.arc.processor.BeanProcessor.registerBeans(BeanProcessor.java:142)
	at io.quarkus.arc.deployment.ArcProcessor.registerBeans(ArcProcessor.java:443)
	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:568)
	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:909)
	at io.quarkus.builder.BuildContext.run(BuildContext.java:282)
	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
	at java.base/java.lang.Thread.run(Thread.java:833)
	at org.jboss.threads.JBossThread.run(JBossThread.java:501)

BeanArchiveProcessor Warning

Quarkus is throwing:

[WARNING] [io.quarkus.arc.deployment.BeanArchiveProcessor] Detected bean archive with bean discovery mode of 'all', this is not portable in CDI Lite and is treated as 'annotated' in Quarkus! Path to beans.xml: org.omnifaces:omnifaces:/META-INF/beans.xml

Would adding a beans.xml file to this project override the org.omnifaces beans.xml file?
Something like...

<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_4_0.xsd"
       version="4.0"
       bean-discovery-mode="annotated">
</beans>

that specifically indicates `annotated' or would that file/change have to be added upstream?

Jakarta EE10/MyFaces 4

Just curious if you had plans to bump from 2.3-next to 4 on this project?

I noticed that MyFaces 4 RC1 was published to the maven repos but I would think that quarkusio/quarkus#21574 will remain a blocker. Beyond that issue opened 21-November I hadn't read anything else about the plans at Quarkus regarding Jakarta EE; Faces in particular.

Also, do you anticipate that the myfaces-quarkus extension will flip out of experimental status before or after that namespace/upgrade from javax to jakarta? Best guess?

Warnings Question

GraalVM is issuing a lot of reflection related warnings

Warning: Could not resolve xyz.somepackage_ClientProxy for reflection configuration. Reason: java.lang.ClassNotFoundException: xyz.somepackage_ClientProxy_ClientProxy.

is there a clean way to have GraalVM work around these classes without warnings? Or, really, handle these better?

I'm guessing "--initialize-at-run-time" would NOT be the way to go as I could see one quickly hitting a point where there would just be too many command line parameters.

Freya JS seems to be not initialized

I have layout.js and prism.js in resources/META-INF/resources/freya-layout/js folder. I can see both scripts are fetched by the browser, but it doesn't look like they are actually used on the page.

How I can see they are not initialized:

  1. When i put console.log() in init like this:
PrimeFaces.widget.Freya = PrimeFaces.widget.BaseWidget.extend({

    init: function(cfg) {
        this._super(cfg);
        this.wrapper = $(document.body).children('.layout-wrapper');
        var $this = this;

        $(function() {
            $this._init();
        });

        this.restoreMenuState();
        this.expandedMenuitems = this.expandedMenuitems||[];
        console.log('PrimeFaces.widget.Freya initialized');
    }

There is no output in the Chrome console.

  1. Freya demo (https://www.primefaces.org/freya/) has the Search icon in the top bar, it changes when clicked on. The functionality is defined in Freya's layout.js. When i copy the same topbar.hxtml to my app - nothing happens onclick. User profile menu (activated on the user image) is not activated on click as well.
  2. When both Freya's layout.js & prism.js are commented out in my template.xhtml - there is no visual or functional change to my app.

When I put both .js files in the <h:head> section of template.xhtml (as it is in Freya distribution) the console shows this error:

Uncaught ReferenceError: PrimeFaces is not defined
at layout.js.xhtml?ln=freya-layout:4:1
(anonymous) @ layout.js.xhtml?ln=freya-layout:4

Docker JVM Runtime Error

mvn clean package -Ddocker

docker run -i --rm -p 8081:8081 melloware/quarkus-faces:latest

logs list below:

2023-06-07 14:24:31 INFO exec  java -Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager -XX:+UseParallelGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:+ExitOnOutOfMemoryError -cp "." -jar /deployments/quarkus-run.jar 
2023-06-07 14:24:31 Starting the Java application using /opt/jboss/container/java/run/run-java.sh ...
2023-06-07 14:24:34 __  ____  __  _____   ___  __ ____  ______ 
2023-06-07 14:24:34  --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ 
2023-06-07 14:24:34  -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \   
2023-06-07 14:24:34 --\___\_\____/_/ |_/_/|_/_/|_|\____/___/   
2023-06-07 14:24:34 2023-06-07 06:24:33,716 INFO  [org.apa.myf.web.MyFacesContainerInitializer] (main) Using org.apache.myfaces.webapp.MyFacesContainerInitializer
2023-06-07 14:24:34 2023-06-07 06:24:33,719 INFO  [org.omn.ApplicationInitializer] (main) Using OmniFaces version 4.1
2023-06-07 14:24:34 2023-06-07 06:24:34,302 SEVERE [org.apa.myf.web.FacesInitializerImpl] (main) An error occured while initializing MyFaces: Unable to get listed resource java\org\primefaces\showcase\convert\CountryConverter.java from directory  for path  from underlying manager io.undertow.server.handlers.resource.ClassPathResourceManager@5c059a68: java.lang.RuntimeException: Unable to get listed resource java\org\primefaces\showcase\convert\CountryConverter.java from directory  for path  from underlying manager io.undertow.server.handlers.resource.ClassPathResourceManager@5c059a68
2023-06-07 14:24:34     at io.quarkus.undertow.runtime.KnownPathResourceManager$DirectoryResource.list(KnownPathResourceManager.java:151)
2023-06-07 14:24:34     at io.undertow.server.handlers.resource.CachedResource.list(CachedResource.java:110)
2023-06-07 14:24:34     at io.undertow.servlet.spec.ServletContextImpl.getResourcePaths(ServletContextImpl.java:271)
2023-06-07 14:24:34     at org.apache.myfaces.context.servlet.ServletExternalContextImplBase.getResourcePaths(ServletExternalContextImplBase.java:143)
2023-06-07 14:24:34     at org.apache.myfaces.config.DefaultFacesConfigurationProvider.getFacesFlowFacesConfig(DefaultFacesConfigurationProvider.java:566)
2023-06-07 14:24:34     at org.apache.myfaces.config.DefaultFacesConfigurationMerger.getFacesConfigData(DefaultFacesConfigurationMerger.java:112)
2023-06-07 14:24:34     at org.apache.myfaces.config.FacesConfigurator.configure(FacesConfigurator.java:468)
2023-06-07 14:24:34     at org.apache.myfaces.webapp.FacesInitializerImpl.buildConfiguration(FacesInitializerImpl.java:382)
2023-06-07 14:24:34     at org.apache.myfaces.webapp.FacesInitializerImpl.initContainerIntegration(FacesInitializerImpl.java:709)
2023-06-07 14:24:34     at org.apache.myfaces.webapp.FacesInitializerImpl.initFaces(FacesInitializerImpl.java:179)
2023-06-07 14:24:34     at org.apache.myfaces.core.extensions.quarkus.runtime.QuarkusFacesInitializer.initFaces(QuarkusFacesInitializer.java:63)
2023-06-07 14:24:34     at org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:54)
2023-06-07 14:24:34     at io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:184)
2023-06-07 14:24:34     at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:217)
2023-06-07 14:24:34     at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:186)
2023-06-07 14:24:34     at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42)
2023-06-07 14:24:34     at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
2023-06-07 14:24:34     at io.quarkus.undertow.runtime.UndertowDeploymentRecorder$9$1.call(UndertowDeploymentRecorder.java:602)
2023-06-07 14:24:34     at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:251)
2023-06-07 14:24:34     at io.quarkus.undertow.runtime.UndertowDeploymentRecorder.bootServletContainer(UndertowDeploymentRecorder.java:543)
2023-06-07 14:24:34     at io.quarkus.deployment.steps.UndertowBuildStep$build767851419.deploy_8(Unknown Source)
2023-06-07 14:24:34     at io.quarkus.deployment.steps.UndertowBuildStep$build767851419.deploy(Unknown Source)
2023-06-07 14:24:34     at io.quarkus.runner.ApplicationImpl.<clinit>(Unknown Source)
2023-06-07 14:24:34     at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
2023-06-07 14:24:34     at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
2023-06-07 14:24:34     at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
2023-06-07 14:24:34     at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
2023-06-07 14:24:34     at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
2023-06-07 14:24:34     at io.quarkus.runtime.Quarkus.run(Quarkus.java:70)
2023-06-07 14:24:34     at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
2023-06-07 14:24:34     at io.quarkus.runtime.Quarkus.run(Quarkus.java:124)
2023-06-07 14:24:34     at io.quarkus.runner.GeneratedMain.main(Unknown Source)
2023-06-07 14:24:34     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2023-06-07 14:24:34     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
2023-06-07 14:24:34     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2023-06-07 14:24:34     at java.base/java.lang.reflect.Method.invoke(Method.java:568)
2023-06-07 14:24:34     at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:61)
2023-06-07 14:24:34     at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:32)
2023-06-07 14:24:34 
2023-06-07 14:24:34 Initialized ShowcaseCacheProvider with Caffeine
2023-06-07 14:24:35 2023-06-07 06:24:35,130 INFO  [io.quarkus] (main) quarkus-faces 13.0.0 on JVM (powered by Quarkus 3.1.0.Final) started in 3.052s. Listening on: http://0.0.0.0:8081
2023-06-07 14:24:35 2023-06-07 06:24:35,131 INFO  [io.quarkus] (main) Profile prod activated. 
2023-06-07 14:24:35 2023-06-07 06:24:35,131 INFO  [io.quarkus] (main) Installed features: [awt, cache, cdi, hibernate-validator, itext, myfaces, omnifaces, poi, primefaces, primefaces-extensions, resteasy, resteasy-jackson, servlet, smallrye-context-propagation, smallrye-health, vertx, websockets, websockets-client]

Native Error (XPathFactory)

mvn -Pnative

pulls native-image 22.3.1.0-Final Mandrel Distribution (Java Version 17.0.6+10) -- which may be new???-- quay.io/quarkus/ubi-quarkus-mandrel-builder-image:22.3-java17

and pretty quickly throws

[1/7] Initializing... (0.0s @ 0.43GB)
Fatal error: java.lang.TypeNotPresentException: Type Lorg/apache/xmlbeans/impl/xpath/XPathFactory; not present
...
Caused by: java.lang.TypeNotPresentException: Type org.apache.xmlbeans.impl.xpath.XPathFactory not present
...

Optimizer: increases 400%

Reported by TimM that the optimizer is increasing size 400% most likely related to recent optimizer changes.

OIDC Example

OIDC with Keycloak example provided in oidc-auth branch

JS error: Sorting

Reported by @tmulle

Uncaught TypeError: e is undefined
    contains jQuery
    _bindEvents http://localhost:8081/javax.faces.resource/script/layout.js.xhtml?ln=showcase:69
    jQuery 8
    _bindEvents http://localhost:8081/javax.faces.resource/script/layout.js.xhtml?ln=showcase:68
    init http://localhost:8081/javax.faces.resource/script/layout.js.xhtml?ln=showcase:17
    <anonymous> http://localhost:8081/javax.faces.resource/script/layout.js.xhtml?ln=showcase:186
jquery.js.xhtml:2:13269

Growl: Double messages received

Running mvn quarkus:dev and hitting the Showcase ToggleSwitch for example click on the "Remote" demo and you will see two AJAX events fired every time. Same thing with the ColorPicker event demo.

Need to get to the bottom of why there are two AJAX events firing one after the other.

image

Maven Build: Java version requirement?

Hello @melloware 👋 , the quarkus-faces project with kubernetes potential looks pretty promising and I just pulled the project and gave a try.

However, using

mvn -Pqdev

following the documentation, I saw

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile (default-compile) on project quarkus-faces: Fatal error compiling: error: release version 17 not supported -> [Help 1]

It looks like java 17 is not supported (but that's the current LTS java version so it should be supported in the future), should it be mentioned in the limitation or documentation somehow, what's the required java version in this case?

App restart triggered by quarkus:dev corrupts the app

There is some problem with the quarkus dev mode and quarkus-faces. When class signature is changed Quarkus triggers app restart:

2023-05-05 15:22:48,498 INFO  [io.qua.dep.dev.RuntimeUpdatesProcessor] (vert.x-worker-thread-1) Restarting quarkus due to changes in BasicView.class.
2023-05-05 15:22:48,611 INFO  [io.quarkus] (Quarkus Main Thread) quarkus-faces stopped in 0.098s

However, after restart it fails on:

Caused by: java.lang.NullPointerException: Cannot invoke "jakarta.faces.context.FacesContext.getExternalContext()" because "facesContext" is null
        at org.apache.myfaces.config.RuntimeConfig.getCurrentInstance(RuntimeConfig.java:121)
        at org.apache.myfaces.application.ApplicationImpl.<init>(ApplicationImpl.java:239)
        at org.apache.myfaces.application.ApplicationFactoryImpl.createAndLogNewApplication(ApplicationFactoryImpl.java:55)
        at org.apache.myfaces.application.ApplicationFactoryImpl.<init>(ApplicationFactoryImpl.java:50)
        ... 62 more
2023-05-05 15:08:36,929 WARNING [org.apa.myf.ren.RenderKitFactoryImpl] (executor-thread-1) Unknown RenderKit 'HTML_BASIC'.
2023-05-05 15:08:36,938 ERROR [io.und.req.io] (executor-thread-1) Exception handling request 83a42543-df93-445e-954d-a8a3f4522120-1 to /index.xhtml: java.lang.NullPointerException: Cannot invoke "jakarta.faces.render.RenderKit.getResponseStateManager()" because "renderKit" is null
        at org.apache.myfaces.context.servlet.FacesContextImpl.isPostback(FacesContextImpl.java:408)
        at jakarta.faces.context.FacesContextWrapper.isPostback(FacesContextWrapper.java:188)
        at org.primefaces.clientwindow.PrimeClientWindowUtils.isPost(PrimeClientWindowUtils.java:77)
        at org.primefaces.clientwindow.PrimeClientWindow.decode(PrimeClientWindow.java:61)
        at org.primefaces.clientwindow.PrimeClientWindowLifecycle.attachWindow(PrimeClientWindowLifecycle.java:50)
        at jakarta.faces.webapp.FacesServlet.service(FacesServlet.java:220)
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
        at org.omnifaces.filter.CacheControlFilter.doFilter(CacheControlFilter.java:239)
        at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at org.omnifaces.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:123)
        at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:63)
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:67)
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:133)
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:65)
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
        at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:247)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:56)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:111)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:108)
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at io.quarkus.undertow.runtime.UndertowDeploymentRecorder$9$1.call(UndertowDeploymentRecorder.java:624)
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleRequest(ServletInitialHandler.java:152)
        at io.quarkus.undertow.runtime.UndertowDeploymentRecorder$1.handleRequest(UndertowDeploymentRecorder.java:124)
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:284)
        at io.undertow.server.DefaultExchangeHandler.handle(DefaultExchangeHandler.java:18)
        at io.quarkus.undertow.runtime.UndertowDeploymentRecorder$5$2.run(UndertowDeploymentRecorder.java:439)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:576)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
        at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
        at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:833)

To reproduce:

  1. mvn clean compile quarkus:dev
  2. load http://localhost:8081
  3. add empty method to org.primefaces.showcase.view.ajax.BasicView.java
  4. re-load http://localhost:8081

Programatically login using Form Authentication

Hello, I'm working on an app that has to use Form Authentication.

Normally we would just create a form posting to /j_security_check and that would work with Quarkus.
But I need to do some work before calling the endpoint, therefore I'm calling a method from a @Named bean.
The problem is that after doing this before-hand work, when I do call ((HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest()).login(username, password);, the method works perfectly but Quarkus doesn't generate a Cookie.

Have you found a solution for this?
Currently I'm picking the external host/url and manually calling /j_security_check with an absolute URL, but that is very ugly and error prone.

Missing Pages/Errors on Showcase Demo

I just clicked on every link in the demo that referred to ‘localhost’ and I found a few pages that gave a 404/error when running in the Docker image.

Expansion - 404/error
The error in the console is:

The Datatable expansion fails with:
2022-08-17 16:40:27,019 SEVERE [org.pri.app.exc.PrimeExceptionHandler] (executor-thread-31) DataTable#rowKey must be defined for component j_id_7i:j_id_7j: java.lang.UnsupportedOperationException: DataTable#rowKey must be defined for component j_id_7i:j_id_7j
	at org.primefaces.component.datatable.DataTable.getRowKey(DataTable.java:635)
	at org.primefaces.component.datatable.DataTableRenderer.encodeRow(DataTableRenderer.java:1237)
	at org.primefaces.component.datatable.DataTableRenderer.encodeRows(DataTableRenderer.java:1180)
	at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:1120)
	at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:1073)
	at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:402)
	at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:332)
	at org.primefaces.component.datatable.DataTableRenderer.render(DataTableRenderer.java:103)
	at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:94)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:649)
	at javax.faces.component.UIData.encodeEnd(UIData.java:1649)
	at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:530)
	at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:526)
	at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:526)
	at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:526)
	at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1782)
	at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:316)
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:74)

MegaMenu - 404/error
Error in console:

2022-08-17 17:16:38,043 SEVERE [org.pri.app.exc.PrimeExceptionHandler] (executor-thread-45) class org.apache.myfaces.view.facelets.compiler.UIInstructions cannot be cast to class org.primefaces.model.menu.MenuElement (org.apache.myfaces.view.facelets.compiler.UIInstructions and org.primefaces.model.menu.MenuElement are in unnamed module of loader io.quarkus.bootstrap.runner.RunnerClassLoader @7cd62f43): java.lang.ClassCastException: class org.apache.myfaces.view.facelets.compiler.UIInstructions cannot be cast to class org.primefaces.model.menu.MenuElement (org.apache.myfaces.view.facelets.compiler.UIInstructions and org.primefaces.model.menu.MenuElement are in unnamed module of loader io.quarkus.bootstrap.runner.RunnerClassLoader @7cd62f43)
	at org.primefaces.component.megamenu.MegaMenuRenderer.encodeColumn(MegaMenuRenderer.java:213)
	at org.primefaces.component.megamenu.MegaMenuRenderer.encodeRootSubmenu(MegaMenuRenderer.java:186)
	at org.primefaces.component.megamenu.MegaMenuRenderer.encodeRootItems(MegaMenuRenderer.java:116)
	at org.primefaces.component.megamenu.MegaMenuRenderer.encodeMarkup(MegaMenuRenderer.java:85)
	at org.primefaces.component.menu.BaseMenuRenderer.encodeEnd(BaseMenuRenderer.java:51)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:649)
	at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:530)
	at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:526)
	at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:526)
	at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1782)
	at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:316)
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:74)
	at org.omnifaces.viewhandler.OmniViewHandler.renderView(OmniViewHandler.java:151)
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:74)
	at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:122)
	at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
	at javax.faces.lifecycle.LifecycleWrapper.render(LifecycleWrapper.java:43)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)
	at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
	at org.omnifaces.filter.CacheControlFilter.doFilter(CacheControlFilter.java:239)
	at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:183)
	at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at org.omnifaces.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:123)
	at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:63)
	at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
	at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:67)
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:133)
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:65)
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
	at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
	at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.quarkus.undertow.runtime.RewriteCorrectingHandlerWrappers$PostWrapper$1.handleRequest(RewriteCorrectingHandlerWrappers.java:51)
	at io.undertow.predicate.PredicatesHandler.handleRequest(PredicatesHandler.java:110)
	at io.undertow.server.handlers.SecureCookieHandler.handleRequest(SecureCookieHandler.java:54)
	at io.undertow.predicate.PredicatesHandler.handleRequest(PredicatesHandler.java:93)
	at io.quarkus.undertow.runtime.RewriteCorrectingHandlerWrappers$PreWrapper$1.handleRequest(RewriteCorrectingHandlerWrappers.java:31)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:247)
	at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:56)
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:111)
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:108)
	at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
	at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
	at io.quarkus.undertow.runtime.UndertowDeploymentRecorder$9$1.call(UndertowDeploymentRecorder.java:595)
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227)
	at io.undertow.servlet.handlers.ServletInitialHandler.handleRequest(ServletInitialHandler.java:152)
	at io.quarkus.undertow.runtime.UndertowDeploymentRecorder$1.handleRequest(UndertowDeploymentRecorder.java:120)
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:284)
	at io.undertow.server.DefaultExchangeHandler.handle(DefaultExchangeHandler.java:18)
	at io.quarkus.undertow.runtime.UndertowDeploymentRecorder$5$1.run(UndertowDeploymentRecorder.java:417)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:555)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
	at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
	at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:829)

Autocomplete - Loads but autocomplete doesn’t work in Safari.. I try the samples like ‘git + TAB’ and nothing happens (no errors in console)

PDF exporter on DataExporter -> Customized (loads but failed when I clicked the PDF button, XLS works)

Error:

2022-08-17 16:36:03,342 SEVERE [org.pri.app.exc.PrimeExceptionHandler] (executor-thread-29) /deployments/null/resources/demo/images/prime_logo.png (No such file or directory): java.io.FileNotFoundException: /deployments/null/resources/demo/images/prime_logo.png (No such file or directory)
	at java.base/java.io.FileInputStream.open0(Native Method)
	at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
	at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
	at java.base/java.io.FileInputStream.<init>(FileInputStream.java:112)
	at java.base/sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:86)
	at java.base/sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:184)
	at java.base/java.net.URL.openStream(URL.java:1165)
	at com.lowagie.text.Image.getInstance(Image.java:252)
	at com.lowagie.text.Image.getInstance(Image.java:328)
	at org.primefaces.showcase.view.data.dataexporter.CustomizedDocumentsView.preProcessPDF(CustomizedDocumentsView.java:141)
	at org.primefaces.showcase.view.data.dataexporter.CustomizedDocumentsView_ClientProxy.preProcessPDF(Unknown Source)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
	at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
	at org.primefaces.component.datatable.export.DataTablePDFExporter.preExport(DataTablePDFExporter.java:85)
	at org.primefaces.component.datatable.export.DataTableExporter.export(DataTableExporter.java:206)
	at org.primefaces.component.export.DataExporter.processAction(DataExporter.java:171)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:58)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:403)
	at javax.faces.component.UICommand.broadcast(UICommand.java:55)
	at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1238)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:414)
	at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1718)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:920)
	at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:43)
	at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:172)
	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:125)
	at javax.faces.lifecycle.LifecycleWrapper.execute(LifecycleWrapper.java:61)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:207)
	at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
	at org.omnifaces.filter.CacheControlFilter.doFilter(CacheControlFilter.java:239)
	at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:183)
	at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at org.omnifaces.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:123)
	at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:63)
	at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
	at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:67)
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:133)
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:65)
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
	at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
	at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.quarkus.undertow.runtime.RewriteCorrectingHandlerWrappers$PostWrapper$1.handleRequest(RewriteCorrectingHandlerWrappers.java:51)
	at io.undertow.predicate.PredicatesHandler.handleRequest(PredicatesHandler.java:110)
	at io.undertow.server.handlers.SecureCookieHandler.handleRequest(SecureCookieHandler.java:54)
	at io.undertow.predicate.PredicatesHandler.handleRequest(PredicatesHandler.java:93)
	at io.quarkus.undertow.runtime.RewriteCorrectingHandlerWrappers$PreWrapper$1.handleRequest(RewriteCorrectingHandlerWrappers.java:31)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:247)
	at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:56)
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:111)
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:108)
	at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
	at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
	at io.quarkus.undertow.runtime.UndertowDeploymentRecorder$9$1.call(UndertowDeploymentRecorder.java:595)
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227)
	at io.undertow.servlet.handlers.ServletInitialHandler.handleRequest(ServletInitialHandler.java:152)
	at io.quarkus.undertow.runtime.UndertowDeploymentRecorder$1.handleRequest(UndertowDeploymentRecorder.java:120)
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:284)
	at io.undertow.server.DefaultExchangeHandler.handle(DefaultExchangeHandler.java:18)
	at io.quarkus.undertow.runtime.UndertowDeploymentRecorder$5$1.run(UndertowDeploymentRecorder.java:417)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:555)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
	at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
	at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:829)

Native Build - PatternSyntaxException: Illegal/unsupported escape sequence

Native Build Fails with below error (mvn package -Dnative) .. Attached GraalVM Native Image Error Report.

svm_err_b_20230926T102541.572_pid62.md

java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 27
META-INF/resources/ui\ajax\listener.xhtml
^
at java.base/java.util.regex.Pattern.error(Pattern.java:2028)
at java.base/java.util.regex.Pattern.escape(Pattern.java:2608)
at java.base/java.util.regex.Pattern.atom(Pattern.java:2286)
at java.base/java.util.regex.Pattern.sequence(Pattern.java:2210)
at java.base/java.util.regex.Pattern.expr(Pattern.java:2069)
at java.base/java.util.regex.Pattern.compile(Pattern.java:1783)
at java.base/java.util.regex.Pattern.(Pattern.java:1430)
at java.base/java.util.regex.Pattern.compile(Pattern.java:1069)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ResourcesFeature.makeResourcePattern(ResourcesFeature.java:361)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.concurrent.ConcurrentHashMap$KeySpliterator.forEachRemaining(ConcurrentHashMap.java:3573)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ResourcesFeature.compilePatterns(ResourcesFeature.java:354)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ResourcesFeature.duringAnalysis(ResourcesFeature.java:337)

Environment Details

  1. Microsoft Windows [Version 10.0.22621.2283]
  2. Apache Maven 3.9.3
  3. Java version: 17.0.8
  4. Docker version 23.0.5
  5. Quarkus 3.4.1

PhotoCam errror

Noticed that /ui/multimedia/photocam/photoCam.xhtml generates error: "Webcam.js caught an error: No supported webcam interface found."
Same functionality works in PF official demo.

Xhtml files under /resources/ui/ can not be read

Hello,

When I run the project and try to go to a page under the /ui/ folder, I get the following error :

java.lang.IllegalStateException: Internal error: file /ui/input/autoComplete.xhtml could not be read
	at org.primefaces.showcase.util.ShowcaseUtil.getFileContent(ShowcaseUtil.java:86)
	at org.primefaces.showcase.util.ShowcaseUtil.getFilesContent(ShowcaseUtil.java:50)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:577)
	at org.apache.el.parser.AstFunction.getValue(AstFunction.java:199)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)
	[...]
Caused by: java.lang.IllegalStateException: Internal error: file /ui/input/autoComplete.xhtml could not be read
	at org.primefaces.showcase.util.FileContentMarkerUtil.readFileContent(FileContentMarkerUtil.java:92)
	at org.primefaces.showcase.util.ShowcaseUtil.getFileContent(ShowcaseUtil.java:77)
	[...]
Caused by: java.io.FileNotFoundException: File /org/primefaces/showcase/view/input/AutoCompleteView.java could not be found
	at org.primefaces.showcase.util.FileContentMarkerUtil.createFileContent(FileContentMarkerUtil.java:187)
	at org.primefaces.showcase.util.FileContentMarkerUtil.addBean(FileContentMarkerUtil.java:158)
	at org.primefaces.showcase.util.FileContentMarkerUtil.readFileContent(FileContentMarkerUtil.java:129)
	at org.primefaces.showcase.util.FileContentMarkerUtil.readFileContent(FileContentMarkerUtil.java:86)
	[...]

What's weirder : I copied the getStarted.xhtml file from /resources to /resources/ui and even /resources/ui/test and it worked without error.

Is it working for you ? Could it have something to do with my setup ? I ran the project from my IntelliJ (latest version) on a windows 11 computer.

Thank you !

Some context parameters are ignored from web.xml

Hello,

It seems that some context parameters inside the web.xml file are ignored, more specifically the org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION and org.apache.myfaces.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION.
I tried changing their values and displaying it in the topbar with #{initParam['_paramName_']} but the values stayed unchanged, respectively 15 and 3.
Some values do work though, org.apache.myfaces.USE_LAMBDA_METAFACTORY for example.

Even changing javax.faces.PROJECT_STAGE from web.xml did not work, but this one worked when put in the application.properties file.

Would you have an idea of why this is happening ?

FYI I've written a question on stackoverflow about this and I would have opened a ticket on MyFaces' jira, but I can't create an account to do so.

[error]: Build step io.quarkus.undertow.websockets.deployment.WebsocketProcessor#holdConfig threw an exception: java.lang.NoSuchFieldError: WEBSOCKETS

Hi @melloware,

when I'm running mvn quarkus:dev, I'm getting following error.

Apache Maven 3.6.3
Java version: 11.0.6, vendor: AdoptOpenJDK
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
mvn quarkus:dev
[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------< com.melloware:quarkus-faces >---------------------
[INFO] Building quarkus-faces 10.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- quarkus-maven-plugin:1.11.3.Final:dev (default-cli) @ quarkus-faces ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] Copying 592 resources
[INFO] Copying 10 resources
[INFO] The encoding used to copy filtered properties files have not been set. This means that the same encoding will be used to copy filtered properties files as when copying other filtered resources. This might not be what you want! Run your build with --debug to see which files might be affected. Read more at https://maven.apache.org/plugins/maven-resources-plugin/examples/filtering-properties-files.html
[INFO] Nothing to compile - all classes are up to date
Listening for transport dt_socket at address: 5005
2021-06-06 13:33:13,950 INFO  [org.jbo.threads] (main) JBoss Threads version 3.2.0.Final
2021-06-06 13:33:14,092 ERROR [io.qua.dep.dev.IsolatedDevModeMain] (main) Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
        [error]: Build step io.quarkus.undertow.websockets.deployment.WebsocketProcessor#holdConfig threw an exception: java.lang.NoSuchFieldError: WEBSOCKETS
        at io.quarkus.undertow.websockets.deployment.WebsocketProcessor.holdConfig(WebsocketProcessor.java:54)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:920)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2415)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
        at java.base/java.lang.Thread.run(Thread.java:834)
        at org.jboss.threads.JBossThread.run(JBossThread.java:501)

        at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:308)
        at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:182)
        at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:59)
        at io.quarkus.deployment.dev.IsolatedDevModeMain.firstStart(IsolatedDevModeMain.java:80)
        at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:379)
        at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:57)
        at io.quarkus.bootstrap.app.CuratedApplication.runInCl(CuratedApplication.java:128)
        at io.quarkus.bootstrap.app.CuratedApplication.runInAugmentClassLoader(CuratedApplication.java:81)
        at io.quarkus.deployment.dev.DevModeMain.start(DevModeMain.java:144)
        at io.quarkus.deployment.dev.DevModeMain.main(DevModeMain.java:63)
Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
        [error]: Build step io.quarkus.undertow.websockets.deployment.WebsocketProcessor#holdConfig threw an exception: java.lang.NoSuchFieldError: WEBSOCKETS
        at io.quarkus.undertow.websockets.deployment.WebsocketProcessor.holdConfig(WebsocketProcessor.java:54)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:920)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2415)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
        at java.base/java.lang.Thread.run(Thread.java:834)
        at org.jboss.threads.JBossThread.run(JBossThread.java:501)

        at io.quarkus.builder.Execution.run(Execution.java:116)
        at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:79)
        at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:153)
        at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:306)
        ... 9 more
Caused by: java.lang.NoSuchFieldError: WEBSOCKETS
        at io.quarkus.undertow.websockets.deployment.WebsocketProcessor.holdConfig(WebsocketProcessor.java:54)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:920)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2415)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
        at java.base/java.lang.Thread.run(Thread.java:834)
        at org.jboss.threads.JBossThread.run(JBossThread.java:501)

2021-06-06 13:33:14,092 INFO  [io.qua.dep.dev.IsolatedDevModeMain] (main) Attempting to start hot replacement endpoint to recover from previous Quarkus startup failure

Thanks,
Sam

Move Java Source to Resources

To allow them to be accessed in Native GraalVM mode it would make it easier if they are in META-INF/resources rather than in the classloader.

Question: Static

Good Morning @melloware

Was just wondering if you have tried preparing this project with --static and --libc=musl and/or -H:+StaticExecutableWithDynamicLibC as in this guide?

Just curious.

Exception with LifecycleFactory.getLifecycle running app via docker

I was experiencing this same problem running in docker with own application so I came here and checked out the repo (e4f48b2) according to the docs and ran in JVM mode and it worked fine, then did the docker JVM instructions and it deploys ok but as soon as I attempt to access the app (http://localhost:8081/), I get the following error:

2023-07-06 01:47:23,710 ERROR [io.und.req.io] (executor-thread-1) Exception handling request 5817b92f-6a02-458e-9002-063c3c6b3867-1 to /: java.lang.NullPointerException: Cannot invoke "jakarta.faces.lifecycle.LifecycleFactory.getLifecycle(String)" because "lifecycleFactory" is null
        at jakarta.faces.webapp.FacesServlet.init(FacesServlet.java:146)
        at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:118)
        at io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:295)
        at io.undertow.servlet.core.ManagedServlet.forceInit(ManagedServlet.java:207)
        at io.undertow.servlet.handlers.ServletChain.forceInit(ServletChain.java:130)
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:63)
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:67)
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:133)
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:65)
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
        at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:247)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:56)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:111)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:108)
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at io.quarkus.undertow.runtime.UndertowDeploymentRecorder$9$1.call(UndertowDeploymentRecorder.java:624)
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleRequest(ServletInitialHandler.java:152)
        at io.quarkus.undertow.runtime.UndertowDeploymentRecorder$1.handleRequest(UndertowDeploymentRecorder.java:124)
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:284)
        at io.undertow.server.DefaultExchangeHandler.handle(DefaultExchangeHandler.java:18)
        at io.quarkus.undertow.runtime.UndertowDeploymentRecorder$5$2.run(UndertowDeploymentRecorder.java:439)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:576)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
        at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
        at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:833)

I'm running on Windows 10 with Docker Desktop 4.21.0.

Client Side Bean Validation: HV000250: Uninitialized locale

Bean Validation doesn't seem to kick in in showcase (/ui/csv/bean.xhtml).

I have slightly different problem, it kicks in for my dto/bean, but fails with:

2022-12-13 00:41:39,451 SEVERE [org.pri.app.exc.PrimeExceptionHandler] (executor-thread-6) HV000250: Uninitialized locale: en. Please register your locale as a locale to initialize when initializing your ValidatorFactory.: javax.validation.ValidationException: HV000250: Uninitialized locale: en. Please register your locale as a locale to initialize when initializing your ValidatorFactory. at org.hibernate.validator.resourceloading.PlatformResourceBundleLocator.getResourceBundle(PlatformResourceBundleLocator.java:181) at org.hibernate.validator.messageinterpolation.AbstractMessageInterpolator.resolveMessage(AbstractMessageInterpolator.java:449) at org.hibernate.validator.messageinterpolation.AbstractMessageInterpolator.lambda$interpolateMessage$0(AbstractMessageInterpolator.java:399) at java.base/java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:330) at org.hibernate.validator.messageinterpolation.AbstractMessageInterpolator.interpolateMessage(AbstractMessageInterpolator.java:399) at org.hibernate.validator.messageinterpolation.AbstractMessageInterpolator.interpolate(AbstractMessageInterpolator.java:355) at org.apache.myfaces.core.api.shared.FacesMessageInterpolator.interpolate(FacesMessageInterpolator.java:47) at org.hibernate.validator.internal.engine.validationcontext.AbstractValidationContext.interpolate(AbstractValidationContext.java:322)

Http Gzip Compression

Investigate why Quarkus compression is not working.

quarkus.http.enable-compression=true

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.