JSF& Richfaces / Primefaces - Maven - Netbeans 8.0.1 - Glassfish 4.1

时间:2014-11-13 18:07:06

标签: maven jsf netbeans primefaces richfaces

有一个非常类似的问题:Richfaces in netbeans with maven,即在GlassFish 4中部署JSF项目时出现问题。 1

  1. 我尝试用以下方法创建一个JSF项目:
    • a)Maven和javax.faces-war-archetype ver 2.2和
    • b)作为NetBeans项目
  2. 我尝试过使用:
    • a)Primefaces 5 - >原理
    • b)Richfaces 4.3 - >没有工作
  3. 项目使用Glassfish 4.0WildFly 8.1
  4. 运行罚款

    我在netbeans中遇到的例外是:

      

    警告:StandardWrapperValve [Faces Servlet]:用于servlet的Servlet.service()Faces Servlet抛出异常   java.lang.IllegalStateException       at com.sun.faces.context.FacesContextImpl.assertNotReleased(FacesContextImpl.java:705)       at com.sun.faces.context.FacesContextImpl.getAttributes(FacesContextImpl.java:237)       at org.richfaces.context.ExtendedPartialViewContext.setInstance(ExtendedPartialViewContext.java:55)       at org.richfaces.context.ExtendedPartialViewContext.release(ExtendedPartialViewContext.java:64)       在org.richfaces.context.ExtendedPartialViewContextImpl.release(ExtendedPartialViewContextImpl.java:424)       at com.sun.faces.context.FacesContextImpl.release(FacesContextImpl.java:591)       在javax.faces.webapp.FacesServlet.service(FacesServlet.java:665)       在org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)       在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)       在org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)       在org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)       在com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)       在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)       在org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)       在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)       at com.sun.enterprise.v3.services.impl.ContainerMapper $ HttpHandlerCallable.call(ContainerMapper.java:459)       at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)       在org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)       在org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)       在org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)       在org.glassfish.grizzly.filterchain.ExecutorResolver $ 9.execute(ExecutorResolver.java:119)       在org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)       在org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)       在org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)       在org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)       在org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)       在org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)       在org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)       在org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)       在org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access $ 100(WorkerThreadIOStrategy.java:56)       在org.glassfish.grizzly.strategies.WorkerThreadIOStrategy $ WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)       在org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:565)       在org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:545)       在java.lang.Thread.run(Thread.java:745)

    我将描述在Maven方式构建项目时我遵循的步骤: 以下是我创建的步骤:JSF项目,NetBeans 8.0.1GlassFish 4.1使用RichFaces。项目是使用 maven archetype javax.faces-war-archetype ver 2.2创建的。

    1. 新项目 - > Maven->项目来自Archetype
    2. 搜索 javax ,因此只有javax.faces-war-archetype - ver2.2可用arhcetypes中的选项。选择它。
    3. 放置位置名称等。我选择名称:test_richfaces_with_archetype
    4. 点击Finish
    5. 创建项目的pom.xml为:

      <?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>com.mydomain.myproject</groupId>
          <artifactId>test_richfaces_with_archetype</artifactId>
          <version>1.0-SNAPSHOT</version>
          <packaging>war</packaging>
          <name>${project.artifactId}</name>
          <description>A simple project with war packaging that depends on JSF 2.2 and 
              javaee 6, in that order.</description>
          <url>http://jsf-spec.java.net/</url>
          <build>
              <finalName>${project.artifactId}</finalName>
              <plugins>
                  <plugin>
                      <artifactId>maven-compiler-plugin</artifactId>
                      <configuration>
                          <source>1.6</source>
                          <target>1.6</target>
                      </configuration>
                  </plugin>
                  <plugin>
                      <artifactId>maven-war-plugin</artifactId>
                      <configuration>
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                      </configuration>
                  </plugin>
      
              </plugins>
          </build>
          <properties>
            <spec.snapshot.version>2.2</spec.snapshot.version>
          </properties>
          <dependencies>
              <dependency>
                  <groupId>javax.faces</groupId>
                  <artifactId>javax.faces-api</artifactId>
                  <version>${spec.snapshot.version}</version>
                  <scope>provided</scope>
              </dependency>
              <dependency>
                  <groupId>javax</groupId>
                  <artifactId>javaee-api</artifactId>
                  <version>6.0</version>
                  <scope>provided</scope>
              </dependency>
          </dependencies>
      
          <repositories>
              <repository>
                  <id>java.net-maven2-SNAPSHOT-repository</id>
                  <name>Java.net SNAPSHOT-Repository for Maven</name>
                  <url>https://maven.java.net/content/repositories/snapshots/</url>
                  <layout>default</layout>
              </repository>
              <repository>
                  <id>java.net-maven2-repository</id>
                  <name>Java.net Repository for Maven</name>
                  <url>https://maven.java.net/content/repositories/releases/</url>
                  <layout>default</layout>
              </repository>
          </repositories>
      </project>
      
      1. 右键单击项目,然后选择properties
      2. 转到Frameworks:您会看到已经为您选择了JSF 2.2
      3. 转到components标签,然后选中Richfaces
      4. 单击确定,NeatBeans将下载Richfaces库并将其放入local maven存储库
      5. pom.xml已更改,现在如下:

        <?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>com.com.mydomain.myproject</groupId>
            <artifactId>test_richfaces_with_archetype</artifactId>
            <version>1.0-SNAPSHOT</version>
            <packaging>war</packaging>
            <name>${project.artifactId}</name>
            <description>A simple project with war packaging that depends on JSF 2.2 and 
                javaee 6, in that order.</description>
            <url>http://jsf-spec.java.net/</url>
            <build>
                <finalName>${project.artifactId}</finalName>
                <plugins>
                    <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <source>1.6</source>
                            <target>1.6</target>
                        </configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-war-plugin</artifactId>
                        <configuration>
                          <failOnMissingWebXml>false</failOnMissingWebXml>
                        </configuration>
                    </plugin>
        
                </plugins>
            </build>
            <properties>
              <spec.snapshot.version>2.2</spec.snapshot.version>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>javax.faces</groupId>
                    <artifactId>javax.faces-api</artifactId>
                    <version>${spec.snapshot.version}</version>
                    <scope>provided</scope>
                </dependency>
                <dependency>
                    <groupId>org.richfaces.core</groupId>
                    <artifactId>richfaces-core-impl</artifactId>
                    <version>4.3.3.Final</version>
                </dependency>
                <dependency>
                    <groupId>org.richfaces.ui</groupId>
                    <artifactId>richfaces-components-ui</artifactId>
                    <version>4.3.3.Final</version>
                </dependency>
                <dependency>
                    <groupId>javax</groupId>
                    <artifactId>javaee-api</artifactId>
                    <version>6.0</version>
                    <scope>provided</scope>
                </dependency>
            </dependencies>
        
            <repositories>
                <repository>
                    <id>java.net-maven2-SNAPSHOT-repository</id>
                    <name>Java.net SNAPSHOT-Repository for Maven</name>
                    <url>https://maven.java.net/content/repositories/snapshots/</url>
                    <layout>default</layout>
                </repository>
                <repository>
                    <id>java.net-maven2-repository</id>
                    <name>Java.net Repository for Maven</name>
                    <url>https://maven.java.net/content/repositories/releases/</url>
                    <layout>default</layout>
                </repository>
                <repository>
                    <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
                    <id>RichFaces-maven-lib</id>
                    <layout>default</layout>
                    <name>Repository for library RichFaces-maven-lib</name>
                </repository>
            </repositories>
        </project>
        

        welcomeRichfaces.xhtml

        <?xml version='1.0' encoding='UTF-8' ?>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml"
              xmlns:rich="http://richfaces.org/rich"
              xmlns:h="http://java.sun.com/jsf/html">
            <h:head>
                <title>Richfaces Welcome Page</title>
            </h:head>
            <h:body>
                <rich:panel header="Welcome to Richfaces">
                    RichFaces is an advanced UI component framework for easily integrating Ajax capabilities into business applications using JSF.  Check out the links below to lear more about using RichFaces in your application.
                    <ul>
                        <li><h:outputLink value="http://richfaces.org" >Richfaces Project Home Page</h:outputLink></li>
                        <li><h:outputLink value="http://showcase.richfaces.org" >Richfaces Showcase</h:outputLink></li>
                        <li><h:outputLink value="https://community.jboss.org/en/richfaces?view=discussions" >User Forum</h:outputLink></li>
                        <li><h:outputLink value="http://www.jboss.org/richfaces/docs" >Richfaces documentation...</h:outputLink>
                            <ul>
                                <li><h:outputLink value="http://docs.jboss.org/richfaces/latest_4_X/Developer_Guide/en-US/html_single/" >Development Guide</h:outputLink></li>
                                <li><h:outputLink value="http://docs.jboss.org/richfaces/latest_4_X/Component_Reference/en-US/html/" >Component Reference</h:outputLink></li>
                                <li><h:outputLink value="http://docs.jboss.org/richfaces/latest_4_X/vdldoc/" >Tag Library Docs</h:outputLink></li>
                            </ul>
                        </li>
                    </ul>
                </rich:panel>
            </h:body>
        </html>
        

        web.xml

        <web-app version="3.0"
                 xmlns="http://java.sun.com/xml/ns/javaee"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
        
            <display-name>mojarra-regression-test</display-name>
            <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
        
            <context-param>
                <description>
                    Tell the runtime where we are in the project development
                    lifecycle.  Valid values are: 
                    Development, UnitTest, SystemTest, or Production.
                    The runtime will display helpful hints to correct common mistakes
                    when the value is Development.
                </description>
                <param-name>javax.faces.PROJECT_STAGE</param-name>
                <param-value>Development</param-value>
            </context-param>
        
            <!-- 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>
        
           <servlet-mapping>
               <servlet-name>Faces Servlet</servlet-name>
               <url-pattern>/faces/*</url-pattern>
           </servlet-mapping>
        
           <welcome-file-list>
             <welcome-file>faces/main.xhtml</welcome-file>
           </welcome-file-list>
        
        </web-app>
        

        此外,如果单击依赖项节点中的加号,您将看到:

        • 的JavaEE-API-6.0.jar
        • javax.faces-API-2.2.jar
        • RichFaces的组件-UI-4.3.3.Final.jar
        • cssparser-0.9.5.jar
        • 番石榴13.0.1.jar
        • RichFaces的组件-API-4.3.3.Final.jar
        • RichFaces的核-API-4.3.3.Final.jar
        • SAC-1.3.jar

        注意:在我的情况下,当我尝试编译(清理构建)项目时,guava库出错了。我删除了我已经在我的存储库中的google文件夹,再次进行了清理构建。重新下载所有内容并编译项目。

        1. 右键点击project,转到properties,选择run,然后从服务器列表中选择GlassFish。单击“确定”。
        2. 右键单击项目,然后选择“运行”。在此阶段,您将在以下位置打开浏览器:http://localhost:8080/test_richfaces_with_archetype。您将使用First name: Duke Last name: Java和提交按钮。
        3. 转到main.xhtml更改它,以便向命令按钮元素添加操作:<h:commandButton value="submit" action="welcomeRichfaces"/>。保存main.xhtml.
        4. 重新加载页面并单击按钮。欢迎richfaces xhtml应该显示在浏览器中。
        5. END

1 个答案:

答案 0 :(得分:1)

我对Wildfly 8.2也有同样的问题。我的解决方案是&#34;降级&#34; JSF。 请参阅Upgrad to Wildfly 8.2 with error