Impossible de trouver l'usine: javax.faces.context.facesContextFactory - Utilisation de Glassfish 3.0 intégrée

StackOverflow https://stackoverflow.com/questions/5973664

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

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top