Finally I successfully bootstrapped Weld in a Spring Boot environment as explained here. CDI works with no problem both for JSF using Mojarra and for Web Services using Jersey.
But now I encountered a problem when trying to include Omnifaces 2.6 in my application.
My application start fails with this message:
com.sun.faces.config.ConfigurationException: Factory 'javax.faces.lifecycle.ClientWindowFactory' was not configured properly.
at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:330) ~[javax.faces-2.2.14.jar:2.2.14]
at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:236) ~[javax.faces-2.2.14.jar:2.2.14]
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:439) ~[javax.faces-2.2.14.jar:2.2.14]
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:227) ~[javax.faces-2.2.14.jar:2.2.14]
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4743) [tomcat-embed-core-8.5.20.jar:8.5.20]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5207) [tomcat-embed-core-8.5.20.jar:8.5.20]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.5.20.jar:8.5.20]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) [tomcat-embed-core-8.5.20.jar:8.5.20]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) [tomcat-embed-core-8.5.20.jar:8.5.20]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_141]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_141]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_141]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_141]
Caused by: javax.faces.FacesException: com.sun.faces.lifecycle.ClientWindowFactoryImpl
at javax.faces.FactoryFinderInstance.getImplGivenPreviousImpl(FactoryFinderInstance.java:407) ~[javax.faces-2.2.14.jar:2.2.14]
at javax.faces.FactoryFinderInstance.getImplementationInstance(FactoryFinderInstance.java:251) ~[javax.faces-2.2.14.jar:2.2.14]
at javax.faces.FactoryFinderInstance.getFactory(FactoryFinderInstance.java:543) ~[javax.faces-2.2.14.jar:2.2.14]
at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:283) ~[javax.faces-2.2.14.jar:2.2.14]
at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:328) ~[javax.faces-2.2.14.jar:2.2.14]
... 12 common frames omitted
Caused by: java.lang.IllegalStateException: Singleton not set for STATIC_INSTANCE => []
at org.jboss.weld.bootstrap.api.helpers.RegistrySingletonProvider$RegistrySingleton.get(RegistrySingletonProvider.java:28) ~[weld-servlet-shaded-3.0.2.Final.jar:3.0.2.Final]
at org.jboss.weld.Container.instance(Container.java:53) ~[weld-servlet-shaded-3.0.2.Final.jar:3.0.2.Final]
at org.jboss.weld.SimpleCDI.<init>(SimpleCDI.java:77) ~[weld-servlet-shaded-3.0.2.Final.jar:3.0.2.Final]
at org.jboss.weld.environment.WeldProvider$EnvironmentCDI.<init>(WeldProvider.java:45) ~[weld-servlet-shaded-3.0.2.Final.jar:3.0.2.Final]
at org.jboss.weld.environment.WeldProvider.getCDI(WeldProvider.java:61) ~[weld-servlet-shaded-3.0.2.Final.jar:3.0.2.Final]
at javax.enterprise.inject.spi.CDI.lambda$getCDIProvider$0(CDI.java:87) ~[weld-servlet-shaded-3.0.2.Final.jar:3.0.2.Final]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174) ~[na:1.8.0_141]
at java.util.TreeMap$KeySpliterator.tryAdvance(TreeMap.java:2770) ~[na:1.8.0_141]
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) ~[na:1.8.0_141]
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498) ~[na:1.8.0_141]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) ~[na:1.8.0_141]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_141]
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152) ~[na:1.8.0_141]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_141]
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464) ~[na:1.8.0_141]
at javax.enterprise.inject.spi.CDI.getCDIProvider(CDI.java:88) ~[weld-servlet-shaded-3.0.2.Final.jar:3.0.2.Final]
at javax.enterprise.inject.spi.CDI.current(CDI.java:64) ~[weld-servlet-shaded-3.0.2.Final.jar:3.0.2.Final]
at org.omnifaces.util.Beans.getManager(Beans.java:87) ~[omnifaces-2.6.8.jar:2.6.8]
at org.omnifaces.util.Beans.getReference(Beans.java:115) ~[omnifaces-2.6.8.jar:2.6.8]
at org.omnifaces.application.OmniApplication.<init>(OmniApplication.java:66) ~[omnifaces-2.6.8.jar:2.6.8]
at org.omnifaces.application.OmniApplicationFactory.createOmniApplication(OmniApplicationFactory.java:86) ~[omnifaces-2.6.8.jar:2.6.8]
at org.omnifaces.application.OmniApplicationFactory.getApplication(OmniApplicationFactory.java:51) ~[omnifaces-2.6.8.jar:2.6.8]
at com.sun.faces.application.InjectionApplicationFactory.getApplication(InjectionApplicationFactory.java:93) ~[javax.faces-2.2.14.jar:2.2.14]
at com.sun.faces.config.InitFacesContext.getApplication(InitFacesContext.java:142) ~[javax.faces-2.2.14.jar:2.2.14]
at com.sun.faces.lifecycle.ClientWindowFactoryImpl.<init>(ClientWindowFactoryImpl.java:62) ~[javax.faces-2.2.14.jar:2.2.14]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_141]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_141]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_141]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_141]
at java.lang.Class.newInstance(Class.java:442) ~[na:1.8.0_141]
at javax.faces.FactoryFinderInstance.getImplGivenPreviousImpl(FactoryFinderInstance.java:405) ~[javax.faces-2.2.14.jar:2.2.14]
... 16 common frames omitted
The POM is:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Beca</groupId>
<artifactId>EscolaSpringBoot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Escola jsf-primefaces-spring-boot</name>
<description>JSF - PrimeFaces Example using Spring Boot and Maven</description>
<url>https://www.codenotfound.com/jsf-primefaces-example-spring-boot-maven.html</url>
<parent>
<groupId>org.joinfaces</groupId>
<artifactId>jsf-spring-boot-parent</artifactId>
<version>2.4.1</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<jersey.version>2.26</jersey.version>
<hibernate.version>5.2.12.Final</hibernate.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.joinfaces</groupId>
<artifactId>jsf-spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jboss.weld.servlet</groupId>
<artifactId>weld-servlet-shaded</artifactId>
<version>3.0.2.Final</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.omnifaces</groupId>
<artifactId>omnifaces</artifactId>
<version>2.6.8</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext.cdi</groupId>
<artifactId>jersey-cdi1x-servlet</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>${jersey.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- spring-boot-maven-plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>