You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2021/04/04 07:58:12 UTC
[myfaces] branch 2.3-next updated: feat(quarkus): update to quarkus
1.13.0.Final (#192)
This is an automated email from the ASF dual-hosted git repository.
bommel pushed a commit to branch 2.3-next
in repository https://gitbox.apache.org/repos/asf/myfaces.git
The following commit(s) were added to refs/heads/2.3-next by this push:
new ef413a7 feat(quarkus): update to quarkus 1.13.0.Final (#192)
ef413a7 is described below
commit ef413a77ad406c9b6db75d8f4e0bef40e1958569
Author: Bernd Bohmann <bo...@apache.org>
AuthorDate: Sun Apr 4 09:58:04 2021 +0200
feat(quarkus): update to quarkus 1.13.0.Final (#192)
---
extensions/quarkus/deployment/pom.xml | 7 +-
.../quarkus/deployment/MyFacesProcessor.java | 234 ++++++++++++---------
extensions/quarkus/pom.xml | 2 +-
extensions/quarkus/showcase/README.md | 4 +-
extensions/quarkus/showcase/pom.xml | 4 +-
.../showcase/src/main/resources/META-INF/web.xml | 86 ++++----
6 files changed, 188 insertions(+), 149 deletions(-)
diff --git a/extensions/quarkus/deployment/pom.xml b/extensions/quarkus/deployment/pom.xml
index 315112c..d6cc8fe 100644
--- a/extensions/quarkus/deployment/pom.xml
+++ b/extensions/quarkus/deployment/pom.xml
@@ -36,7 +36,12 @@
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
- <artifactId>quarkus-undertow-websockets-deployment</artifactId>
+ <artifactId>quarkus-undertow-deployment</artifactId>
+ <version>${quarkus.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-websockets-deployment</artifactId>
<version>${quarkus.version}</version>
</dependency>
<dependency>
diff --git a/extensions/quarkus/deployment/src/main/java/org/apache/myfaces/core/extensions/quarkus/deployment/MyFacesProcessor.java b/extensions/quarkus/deployment/src/main/java/org/apache/myfaces/core/extensions/quarkus/deployment/MyFacesProcessor.java
index e712a03..4fcc986 100644
--- a/extensions/quarkus/deployment/src/main/java/org/apache/myfaces/core/extensions/quarkus/deployment/MyFacesProcessor.java
+++ b/extensions/quarkus/deployment/src/main/java/org/apache/myfaces/core/extensions/quarkus/deployment/MyFacesProcessor.java
@@ -18,37 +18,56 @@
*/
package org.apache.myfaces.core.extensions.quarkus.deployment;
-import java.io.IOException;
-import java.util.Optional;
-
-import javax.faces.application.ProjectStage;
-import javax.faces.application.StateManager;
-import javax.faces.application.ViewHandler;
-import javax.faces.component.FacesComponent;
-import javax.faces.component.behavior.FacesBehavior;
-import javax.faces.convert.FacesConverter;
-import javax.faces.flow.FlowScoped;
-import javax.faces.flow.builder.FlowDefinition;
-import javax.faces.model.FacesDataModel;
-import javax.faces.render.FacesBehaviorRenderer;
-import javax.faces.render.FacesRenderer;
-import javax.faces.validator.FacesValidator;
-import javax.faces.view.ViewScoped;
-import javax.faces.view.facelets.FaceletsResourceResolver;
-import javax.faces.webapp.FacesServlet;
-
+import io.quarkus.arc.deployment.AdditionalBeanBuildItem;
+import io.quarkus.arc.deployment.BeanDefiningAnnotationBuildItem;
+import io.quarkus.arc.deployment.BeanRegistrationPhaseBuildItem;
+import io.quarkus.arc.deployment.ContextRegistrationPhaseBuildItem;
+import io.quarkus.arc.deployment.ContextRegistrationPhaseBuildItem.ContextConfiguratorBuildItem;
+import io.quarkus.arc.deployment.CustomScopeBuildItem;
+import io.quarkus.arc.deployment.SyntheticBeanBuildItem;
+import io.quarkus.deployment.annotations.BuildProducer;
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.annotations.ExecutionTime;
+import io.quarkus.deployment.annotations.Record;
+import io.quarkus.deployment.builditem.AdditionalApplicationArchiveMarkerBuildItem;
+import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBundleBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem;
+import io.quarkus.runtime.LaunchMode;
+import io.quarkus.runtime.configuration.ProfileManager;
+import io.quarkus.undertow.deployment.ListenerBuildItem;
+import io.quarkus.undertow.deployment.ServletBuildItem;
+import io.quarkus.undertow.deployment.ServletInitParamBuildItem;
+import io.quarkus.undertow.deployment.WebMetadataBuildItem;
+import org.apache.el.ExpressionFactoryImpl;
+import org.apache.myfaces.application.ApplicationImplEventManager;
+import org.apache.myfaces.application.viewstate.StateUtils;
import org.apache.myfaces.cdi.FacesScoped;
import org.apache.myfaces.cdi.JsfApplicationArtifactHolder;
import org.apache.myfaces.cdi.JsfArtifactProducer;
import org.apache.myfaces.cdi.config.FacesConfigBeanHolder;
import org.apache.myfaces.cdi.model.FacesDataModelManager;
+import org.apache.myfaces.cdi.util.BeanEntry;
import org.apache.myfaces.cdi.view.ViewScopeBeanHolder;
import org.apache.myfaces.cdi.view.ViewTransientScoped;
+import org.apache.myfaces.config.FacesConfigurator;
import org.apache.myfaces.config.MyfacesConfig;
import org.apache.myfaces.config.annotation.CdiAnnotationProviderExtension;
import org.apache.myfaces.config.element.NamedEvent;
+import org.apache.myfaces.core.api.shared.lang.PropertyDescriptorUtils;
+import org.apache.myfaces.core.extensions.quarkus.runtime.MyFacesRecorder;
+import org.apache.myfaces.core.extensions.quarkus.runtime.QuarkusFacesInitilializer;
import org.apache.myfaces.core.extensions.quarkus.runtime.exception.QuarkusExceptionHandlerFactory;
+import org.apache.myfaces.core.extensions.quarkus.runtime.scopes.QuarkusFacesScopeContext;
+import org.apache.myfaces.core.extensions.quarkus.runtime.scopes.QuarkusFlowScopedContext;
+import org.apache.myfaces.core.extensions.quarkus.runtime.scopes.QuarkusViewScopeContext;
+import org.apache.myfaces.core.extensions.quarkus.runtime.scopes.QuarkusViewTransientScopeContext;
+import org.apache.myfaces.core.extensions.quarkus.runtime.spi.QuarkusFactoryFinderProvider;
+import org.apache.myfaces.core.extensions.quarkus.runtime.spi.QuarkusInjectionProvider;
+import org.apache.myfaces.el.ELResolverBuilderForFaces;
import org.apache.myfaces.el.resolver.LambdaBeanELResolver;
import org.apache.myfaces.flow.cdi.FlowBuilderFactoryBean;
import org.apache.myfaces.flow.cdi.FlowScopeBeanHolder;
@@ -57,97 +76,77 @@ import org.apache.myfaces.push.cdi.WebsocketApplicationBean;
import org.apache.myfaces.push.cdi.WebsocketChannelTokenBuilderBean;
import org.apache.myfaces.push.cdi.WebsocketSessionBean;
import org.apache.myfaces.push.cdi.WebsocketViewBean;
+import org.apache.myfaces.renderkit.ErrorPageWriter;
+import org.apache.myfaces.spi.FactoryFinderProviderFactory;
+import org.apache.myfaces.spi.impl.DefaultWebConfigProviderFactory;
+import org.apache.myfaces.util.ExternalContextUtils;
+import org.apache.myfaces.util.lang.ClassUtils;
+import org.apache.myfaces.view.ViewScopeProxyMap;
+import org.apache.myfaces.view.facelets.compiler.SAXCompiler;
+import org.apache.myfaces.view.facelets.compiler.TagLibraryConfig;
import org.apache.myfaces.view.facelets.tag.LambdaMetadataTargetImpl;
+import org.apache.myfaces.view.facelets.tag.MethodRule;
+import org.apache.myfaces.view.facelets.tag.jsf.ComponentSupport;
+import org.apache.myfaces.webapp.AbstractFacesInitializer;
+import org.apache.myfaces.webapp.FaceletsInitilializer;
+import org.apache.myfaces.webapp.MyFacesContainerInitializer;
import org.apache.myfaces.webapp.StartupServletContextListener;
import org.eclipse.microprofile.config.Config;
import org.eclipse.microprofile.config.ConfigProvider;
import org.jboss.jandex.AnnotationInstance;
+import org.jboss.jandex.AnnotationTarget;
import org.jboss.jandex.AnnotationValue;
+import org.jboss.jandex.ClassInfo;
import org.jboss.jandex.DotName;
+import org.jboss.jandex.FieldInfo;
+import org.jboss.jandex.MethodInfo;
+import org.jboss.jandex.Type;
+import org.jboss.metadata.web.spec.ServletMetaData;
+import org.jboss.metadata.web.spec.WebMetaData;
-import io.quarkus.arc.deployment.AdditionalBeanBuildItem;
-import io.quarkus.arc.deployment.BeanDefiningAnnotationBuildItem;
-import io.quarkus.arc.deployment.BeanRegistrarBuildItem;
-import io.quarkus.arc.deployment.BeanRegistrationPhaseBuildItem;
-import io.quarkus.arc.deployment.ContextRegistrarBuildItem;
-import io.quarkus.deployment.annotations.BuildProducer;
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.annotations.ExecutionTime;
-import io.quarkus.deployment.annotations.Record;
-import io.quarkus.deployment.builditem.AdditionalApplicationArchiveMarkerBuildItem;
-import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
-import io.quarkus.deployment.builditem.FeatureBuildItem;
-import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
-import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBundleBuildItem;
-import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
-import org.apache.myfaces.core.extensions.quarkus.runtime.MyFacesRecorder;
-import org.apache.myfaces.core.extensions.quarkus.runtime.QuarkusFacesInitilializer;
-import org.apache.myfaces.core.extensions.quarkus.runtime.scopes.QuarkusFacesScopeContext;
-import org.apache.myfaces.core.extensions.quarkus.runtime.scopes.QuarkusFlowScopedContext;
-import org.apache.myfaces.core.extensions.quarkus.runtime.scopes.QuarkusViewScopeContext;
-import org.apache.myfaces.core.extensions.quarkus.runtime.scopes.QuarkusViewTransientScopeContext;
-import org.apache.myfaces.core.extensions.quarkus.runtime.spi.QuarkusInjectionProvider;
-import io.quarkus.runtime.LaunchMode;
-import io.quarkus.runtime.configuration.ProfileManager;
-import io.quarkus.undertow.deployment.ListenerBuildItem;
-import io.quarkus.undertow.deployment.ServletBuildItem;
-import io.quarkus.undertow.deployment.ServletInitParamBuildItem;
-import io.quarkus.undertow.deployment.WebMetadataBuildItem;
-
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
import javax.el.ELResolver;
import javax.enterprise.inject.Produces;
import javax.faces.FactoryFinder;
import javax.faces.application.Application;
+import javax.faces.application.ProjectStage;
+import javax.faces.application.StateManager;
+import javax.faces.application.ViewHandler;
+import javax.faces.component.FacesComponent;
import javax.faces.component.UIComponent;
import javax.faces.component.behavior.Behavior;
+import javax.faces.component.behavior.FacesBehavior;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
+import javax.faces.convert.FacesConverter;
import javax.faces.event.ExceptionQueuedEventContext;
import javax.faces.event.SystemEvent;
+import javax.faces.flow.FlowScoped;
+import javax.faces.flow.builder.FlowDefinition;
+import javax.faces.model.FacesDataModel;
import javax.faces.render.ClientBehaviorRenderer;
+import javax.faces.render.FacesBehaviorRenderer;
+import javax.faces.render.FacesRenderer;
import javax.faces.render.Renderer;
+import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
+import javax.faces.view.ViewScoped;
import javax.faces.view.facelets.ComponentHandler;
import javax.faces.view.facelets.ConverterHandler;
+import javax.faces.view.facelets.FaceletsResourceResolver;
import javax.faces.view.facelets.MetaRuleset;
import javax.faces.view.facelets.TagHandler;
import javax.faces.view.facelets.ValidatorHandler;
+import javax.faces.webapp.FacesServlet;
import javax.inject.Named;
import javax.servlet.MultipartConfigElement;
import javax.xml.parsers.DocumentBuilderFactory;
-import org.apache.el.ExpressionFactoryImpl;
-import org.apache.myfaces.application.ApplicationImplEventManager;
-import org.apache.myfaces.application.viewstate.StateUtils;
-import org.apache.myfaces.cdi.util.BeanEntry;
-import org.apache.myfaces.config.FacesConfigurator;
-import org.apache.myfaces.core.api.shared.lang.PropertyDescriptorUtils;
-import org.apache.myfaces.core.extensions.quarkus.runtime.spi.QuarkusFactoryFinderProvider;
-import org.apache.myfaces.el.ELResolverBuilderForFaces;
-import org.apache.myfaces.renderkit.ErrorPageWriter;
-import org.apache.myfaces.spi.FactoryFinderProviderFactory;
-import org.apache.myfaces.spi.impl.DefaultWebConfigProviderFactory;
-import org.apache.myfaces.util.ExternalContextUtils;
-import org.apache.myfaces.util.lang.ClassUtils;
-import org.apache.myfaces.view.ViewScopeProxyMap;
-import org.apache.myfaces.view.facelets.compiler.SAXCompiler;
-import org.apache.myfaces.view.facelets.compiler.TagLibraryConfig;
-import org.apache.myfaces.view.facelets.tag.MethodRule;
-import org.apache.myfaces.view.facelets.tag.jsf.ComponentSupport;
-import org.apache.myfaces.webapp.AbstractFacesInitializer;
-import org.apache.myfaces.webapp.FaceletsInitilializer;
-import org.apache.myfaces.webapp.MyFacesContainerInitializer;
-import org.jboss.jandex.AnnotationTarget;
-import org.jboss.jandex.ClassInfo;
-import org.jboss.jandex.FieldInfo;
-import org.jboss.jandex.MethodInfo;
-import org.jboss.jandex.Type;
-import org.jboss.metadata.web.spec.ServletMetaData;
-import org.jboss.metadata.web.spec.WebMetaData;
+import java.io.IOException;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
class MyFacesProcessor
{
@@ -254,26 +253,57 @@ class MyFacesProcessor
}
@BuildStep
- void buildCdiScopes(BuildProducer<ContextRegistrarBuildItem> contextRegistrar) throws IOException
- {
- contextRegistrar.produce(new ContextRegistrarBuildItem(registrationContext -> {
- registrationContext.configure(ViewScoped.class)
- .normal()
- .contextClass(QuarkusViewScopeContext.class)
- .done();
- registrationContext.configure(FacesScoped.class)
- .normal()
- .contextClass(QuarkusFacesScopeContext.class)
- .done();
- registrationContext.configure(ViewTransientScoped.class)
- .normal()
- .contextClass(QuarkusViewTransientScopeContext.class)
- .done();
- registrationContext.configure(FlowScoped.class)
- .normal()
- .contextClass(QuarkusFlowScopedContext.class)
- .done();
- }, ViewScoped.class, FacesScoped.class, ViewTransientScoped.class, FlowScoped.class));
+ ContextConfiguratorBuildItem registerViewScopeContext(ContextRegistrationPhaseBuildItem phase)
+ {
+ return new ContextConfiguratorBuildItem(
+ phase.getContext().configure(ViewScoped.class).normal().contextClass(QuarkusViewScopeContext.class));
+ }
+
+ @BuildStep
+ CustomScopeBuildItem viewScoped()
+ {
+ return new CustomScopeBuildItem(DotName.createSimple(ViewScoped.class.getName()));
+ }
+
+ @BuildStep
+ ContextConfiguratorBuildItem registerViewTransientScopeContext(ContextRegistrationPhaseBuildItem phase)
+ {
+ return new ContextConfiguratorBuildItem(
+ phase.getContext().configure(ViewTransientScoped.class)
+ .normal().contextClass(QuarkusViewTransientScopeContext.class));
+ }
+
+ @BuildStep
+ CustomScopeBuildItem viewTransientScoped()
+ {
+ return new CustomScopeBuildItem(DotName.createSimple(ViewTransientScoped.class.getName()));
+ }
+
+ @BuildStep
+ ContextConfiguratorBuildItem registerFacesScopeContext(ContextRegistrationPhaseBuildItem phase)
+ {
+ return new ContextConfiguratorBuildItem(
+ phase.getContext().configure(FacesScoped.class).normal().contextClass(QuarkusFacesScopeContext.class));
+ }
+
+ @BuildStep
+ CustomScopeBuildItem facesScoped()
+ {
+ return new CustomScopeBuildItem(DotName.createSimple(FacesScoped.class.getName()));
+
+ }
+
+ @BuildStep
+ ContextConfiguratorBuildItem registerFlowScopedContext(ContextRegistrationPhaseBuildItem phase)
+ {
+ return new ContextConfiguratorBuildItem(
+ phase.getContext().configure(FlowScoped.class).normal().contextClass(QuarkusFlowScopedContext.class));
+ }
+
+ @BuildStep
+ CustomScopeBuildItem flowScoped()
+ {
+ return new CustomScopeBuildItem(DotName.createSimple(FlowScoped.class.getName()));
}
@BuildStep
@@ -375,7 +405,7 @@ class MyFacesProcessor
@BuildStep
@Record(ExecutionTime.STATIC_INIT)
void buildFacesDataModels(MyFacesRecorder recorder,
- BuildProducer<BeanRegistrarBuildItem> beanConfigurators,
+ BuildProducer<SyntheticBeanBuildItem> beanConfigurators,
CombinedIndexBuildItem combinedIndex) throws IOException
{
for (AnnotationInstance ai : combinedIndex.getIndex()
diff --git a/extensions/quarkus/pom.xml b/extensions/quarkus/pom.xml
index 874edbf..2a4056c 100644
--- a/extensions/quarkus/pom.xml
+++ b/extensions/quarkus/pom.xml
@@ -43,7 +43,7 @@
</modules>
<properties>
- <quarkus.version>1.7.0.Final</quarkus.version>
+ <quarkus.version>1.13.0.Final</quarkus.version>
</properties>
<build>
diff --git a/extensions/quarkus/showcase/README.md b/extensions/quarkus/showcase/README.md
index 8f7d88c..3e103d0 100644
--- a/extensions/quarkus/showcase/README.md
+++ b/extensions/quarkus/showcase/README.md
@@ -4,7 +4,7 @@ This sample application shows Quarkus Myfaces extension usage
## Running
-`mvn clean package -DskipTests && java -jar ./target/quarkus-myfaces-showcase-1.0-SNAPSHOT-runner.jar`
+`mvn clean package -DskipTests && java -jar ./target/quarkus-app/quarkus-run.jar`
## Dev mode
@@ -22,7 +22,7 @@ For native mode you need [graalvm 19.3.1](https://github.com/graalvm/graalvm-ce-
Following is how to `build and run` the native image:
-`mvn clean package -Pnative && ./target/quarkus-myfaces-showcase-1.0-SNAPSHOT-runner`
+`mvn clean package -Pnative && java -jar ./target/quarkus-app/quarkus-run.jar`
## Testing
diff --git a/extensions/quarkus/showcase/pom.xml b/extensions/quarkus/showcase/pom.xml
index 7250218..cc5ee2e 100644
--- a/extensions/quarkus/showcase/pom.xml
+++ b/extensions/quarkus/showcase/pom.xml
@@ -25,8 +25,8 @@
<name>Apache MyFaces Core 2.3-next - Extensions - Quarkus - Showcase</name>
<properties>
- <quarkus.version>1.7.0.Final</quarkus.version>
- <myfaces.version>2.3-next-M4</myfaces.version>
+ <quarkus.version>1.13.0.Final</quarkus.version>
+ <myfaces.version>2.3-next-SNAPSHOT</myfaces.version>
<failsafe.version>2.22.0</failsafe.version>
<surefire.version>2.22.0</surefire.version>
diff --git a/extensions/quarkus/showcase/src/main/resources/META-INF/web.xml b/extensions/quarkus/showcase/src/main/resources/META-INF/web.xml
index f4e2e8a..e17facf 100644
--- a/extensions/quarkus/showcase/src/main/resources/META-INF/web.xml
+++ b/extensions/quarkus/showcase/src/main/resources/META-INF/web.xml
@@ -1,42 +1,46 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
--->
-<web-app version="4.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
-
- <context-param>
- <param-name>javax.faces.ENABLE_WEBSOCKET_ENDPOINT</param-name>
- <param-value>true</param-value>
- </context-param>
- <context-param>
- <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
- <param-value>true</param-value>
- </context-param>
-
- <context-param>
- <param-name>primefaces.THEME</param-name>
- <param-value>luna-amber</param-value>
- </context-param>
- <context-param>
- <param-name>org.apache.myfaces.AUTOMATIC_EXTENSIONLESS_MAPPING</param-name>
- <param-value>true</param-value>
- </context-param>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<web-app version="4.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
+
+ <context-param>
+ <param-name>javax.faces.ENABLE_WEBSOCKET_ENDPOINT</param-name>
+ <param-value>true</param-value>
+ </context-param>
+ <context-param>
+ <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
+ <param-value>true</param-value>
+ </context-param>
+
+ <context-param>
+ <param-name>primefaces.THEME</param-name>
+ <param-value>luna-amber</param-value>
+ </context-param>
+ <context-param>
+ <param-name>org.apache.myfaces.AUTOMATIC_EXTENSIONLESS_MAPPING</param-name>
+ <param-value>true</param-value>
+ </context-param>
+
+ <welcome-file-list>
+ <welcome-file>index.xhtml</welcome-file>
+ </welcome-file-list>
+
</web-app>
\ No newline at end of file