Impossible de trouver l'usine: javax.faces.context.facesContextFactory - Utilisation de Glassfish 3.0 intégrée
-
12-11-2019 - |
Question
J'essaie d'exécuter un tutoriel JSF-2.0 simple à l'aide de Glassfish 3.0 embarquée et de continuer à obtenir cette erreur. Ont recherché des solutions sur ce forum et sur Internet et semble ne pas obtenir. Voici le pom:
<modelVersion>4.0.0</modelVersion>
<groupId>com.googlecode.sandcode</groupId>
<artifactId>helloworld</artifactId>
<packaging>war</packaging>
<name>${project.artifactId}</name>
<version>1.0</version>
<repositories>
<repository>
<id>java.net.m2</id>
<url>http://download.java.net/maven/2</url>
</repository>
<repository>
<id>java.net.glassfish.m2</id>
<url>http://download.java.net/maven/glassfish</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<pluginRepositories>
<pluginRepository>
<id>glassfish-repository</id>
<name>Java.net Repository for Glassfish</name>
<url>http://download.java.net/maven/glassfish</url>
<layout>default</layout>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
<build>
<plugins>
<!-- embedded glassfishV3 for testing -->
<plugin>
<groupId>org.glassfish</groupId>
<artifactId>maven-embedded-glassfish-plugin</artifactId>
<version>3.0</version>
<configuration>
<goalPrefix>glassfish</goalPrefix>
<app>target/helloworld-1.0.war</app>
<port>8080</port>
<contextRoot>test</contextRoot>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
Web.xml:
<!-- Faces Servlet -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<!-- explicitly setting the EL factory, otherwise is not working correctly under tomcat and jetty -->
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
<!-- welcome file mapping -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
Après avoir exécuté le package MVN, le fichier de guerre est généré et Glassfish démarre. Mais se plaint l'erreur. Dans le dossier du projet, je peux voir la dépendance JSF Maven: JSF-API-2.1.jar.
Merci, Sarah
La solution
Je répondrai à ma propre question. : P
J'ai ajouté ceci à web.xml et fonctionné:
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class> </listener>
Voici la page Web explique le problème: http://javawords.com/2009/06/05/using-jsf-12-with-facelets-on-google-app-ngine-for-java/
Il semble que le verre de verre intégré n'initialise pas les servlets au démarrage, au lieu de cela, l'initialisation est reportée jusqu'à la première demande.
Sarah