не удалось найти Factory: javax.faces.context.FacesContextFactory - с использованием встроенного glassfish 3.0 - PullRequest
0 голосов
/ 12 мая 2011

Я пытаюсь запустить простое руководство по jsf-2.0 с использованием встроенного glassfish 3.0 и продолжаю получать эту ошибку. Поиск решений на этом форуме и в Интернете, и, кажется, не получить никуда Вот пом:

</p> <pre><code><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:

</p> <pre><code><!-- 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>

После запуска mvn package создается файл war и запускается glassfish. Но жалуется на ошибку. В папке проекта я вижу зависимость jsf Maven: jsf-api-2.1.jar.

Спасибо, Сара

1 Ответ

2 голосов
/ 20 мая 2011

Я отвечу на свой вопрос. : P

Я добавил это в web.xml и работал:

<listener><br> <listener-class>com.sun.faces.config.ConfigureListener</listener-class> </listener>

Вот веб-страница, объясняющая проблему: http://javawords.com/2009/06/05/using-jsf-12-with-facelets-on-google-app-engine-for-java/

Похоже, что встроенный стекловидный компьютер не инициализирует сервлеты при запуске, вместо этого инициализация откладывается до первого запроса.

Сара

...