【问题标题】:Error: when deploying a JSF application [duplicate]错误:部署 JSF 应用程序时 [重复]
【发布时间】:2016-06-20 11:12:13
【问题描述】:

我正在尝试将 JSF 战争文件部署到码头服务器中(或者至少我认为是这样)。这是一个“学习项目”,用于部署使用单个 JSF 托管 bean 的 JSF 应用程序。我有一个初始化码头服务器的主服务器。

package root;

import org.eclipse.jetty.server.Server;
//import org.eclipse.jetty.server.handler.ContextHandler.Context;
import org.eclipse.jetty.webapp.WebAppContext;

public class Main {
    public static void main(String[] args) throws Exception {
        String portStr = System.getenv("PORT");
        int port = (portStr == null) ? 8085 : Integer.parseInt(portStr);
        Server server = new Server(port);
        WebAppContext webapp = new WebAppContext();
        webapp.setContextPath("/");
        // change the name of the war as needed.
        webapp.setWar("target/maven_webType_example-1.0-SNAPSHOT.war");
        server.setHandler(webapp);

        server.start();
        server.join();

    }


}

我无法判断这是否与我的 pom 或 web(或两者)xml 文件的 xml 定义冲突。

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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <version>1.0-SNAPSHOT</version>
    <artifactId>maven_webType_example</artifactId>
    <packaging>war</packaging>
    <dependencies>
        <dependency>            
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>9.3.7.v20160115</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-webapp</artifactId>
            <version>9.3.7.v20160115</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-deploy</artifactId>
            <version>9.3.7.v20160115</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jasper</artifactId>
            <version>9.0.0.M3</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>7.0</version>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>
        <dependency>
            <groupId>com.heroku.sdk</groupId>
            <artifactId>heroku-jdbc</artifactId>
            <version>0.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>javax.faces</artifactId>
            <version>2.2.13</version>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-impl</artifactId>
             <version>2.1.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

    </dependencies>
    <build>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>

                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.10</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals><goal>copy-dependencies</goal></goals>
                        <!--<configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>com.githum.jsimone</groupId>
                                    <artifactId>webapp-runner</artifactId>
                                    <destFileName>webapp-runner.jar</destFileName>
                                    <version>7.0.27.1</version>                                  
                                </artifactItem>
                            </artifactItems>
                        </configuration>-->
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>appassembler-maven-plugin</artifactId>
                <version>1.1.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>assemble</goal>
                        </goals>
                        <configuration>
                            <assembleDirectory>target</assembleDirectory>
                            <generateRepository>true</generateRepository>
                            <programs>
                                <program>
                                    <mainClass>root.Main</mainClass>
                                    <name>webapp</name>
                                </program>
                            </programs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 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_3_1.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.expressionFactory</param-name>
        <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.forceLoadConfiguration</param-name>
        <param-value>true</param-value>
    </context-param>
    <container-descriptor>
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
        <!--<prefer-application-resources>
            <resource-name>javax.faces.*</resource-name>
            <resource-name>com.sun.faces.*</resource-name>
            <resource-name>com.bea.faces.*</resource-name>
            <resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
            <resource-name>META-INF/services/com.sun.faces.spi.FacesConfigResourceProvider</resource-name>
        </prefer-application-resources>-->
    </container-descriptor>
    <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>
    <session-config>
        <session-timeout>
            30 
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>

</web-app>

执行过程中出现的错误: java -verbose:class -cp target/classes:target/dependency/* root/Main

这发生在 main 中的 server.start() 处:

SEVERE: Critical error during deployment:
com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED!
com.sun.faces.vendor.WebContainerInjectionProvider cannot be cast to com.sun.faces.spi.InjectionProvider
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:453)

我看到的大多数建议是与应用的资源库存在某种冲突。

我正在使用 NetBeans 进行开发,为 net bean 添加了一些依赖项,例如 glassfish。最终目标是将其推送到 Heroku。我对这些库了解得不够多,无法理解为什么在部署时会发生演员表。

感谢任何帮助。这是我的依赖树:

[INFO]
[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ maven_webType_example ---
[INFO] com.example:maven_webType_example:war:1.0-SNAPSHOT
[INFO] +- org.eclipse.jetty:jetty-server:jar:9.3.7.v20160115:compile
[INFO] |  +- org.eclipse.jetty:jetty-http:jar:9.3.7.v20160115:compile
[INFO] |  |  \- org.eclipse.jetty:jetty-util:jar:9.3.7.v20160115:compile
[INFO] |  \- org.eclipse.jetty:jetty-io:jar:9.3.7.v20160115:compile
[INFO] com.example:maven_webType_example:war:1.0-SNAPSHOT
[INFO] +- org.eclipse.jetty:jetty-server:jar:9.3.7.v20160115:compile
[INFO] |  +- org.eclipse.jetty:jetty-http:jar:9.3.7.v20160115:compile
[INFO] |  |  \- org.eclipse.jetty:jetty-util:jar:9.3.7.v20160115:compile
[INFO] |  \- org.eclipse.jetty:jetty-io:jar:9.3.7.v20160115:compile
[INFO] +- org.eclipse.jetty:jetty-webapp:jar:9.3.7.v20160115:compile
[INFO] |  +- org.eclipse.jetty:jetty-xml:jar:9.3.7.v20160115:compile
[INFO] |  \- org.eclipse.jetty:jetty-servlet:jar:9.3.7.v20160115:compile
[INFO] |     \- org.eclipse.jetty:jetty-security:jar:9.3.7.v20160115:compile
[INFO] |     \- org.eclipse.jetty:jetty-security:jar:9.3.7.v20160115:compile
[INFO] +- org.eclipse.jetty:jetty-deploy:jar:9.3.7.v20160115:compile
[INFO] +- org.apache.tomcat:tomcat-jasper:jar:9.0.0.M3:compile
[INFO] |  +- org.apache.tomcat:tomcat-servlet-api:jar:9.0.0.M3:compile
[INFO] |  +- org.apache.tomcat:tomcat-juli:jar:9.0.0.M3:compile
[INFO] |  +- org.apache.tomcat:tomcat-jsp-api:jar:9.0.0.M3:compile
[INFO] |  +- org.apache.tomcat:tomcat-el-api:jar:9.0.0.M3:compile
[INFO] |  +- org.eclipse.jdt.core.compiler:ecj:jar:4.5:compile
[INFO] |  +- org.apache.tomcat:tomcat-jasper-el:jar:9.0.0.M3:compile
[INFO] |  +- org.apache.tomcat:tomcat-api:jar:9.0.0.M3:compile
[INFO] |  \- org.apache.tomcat:tomcat-util-scan:jar:9.0.0.M3:compile
[INFO] |     \- org.apache.tomcat:tomcat-util:jar:9.0.0.M3:compile
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:compile
[INFO] +- javax:javaee-web-api:jar:7.0:compile
[INFO] +- javax:javaee-api:jar:7.0:compile
[INFO] |  \- com.sun.mail:javax.mail:jar:1.5.0:compile
[INFO] |     \- javax.activation:activation:jar:1.1:compile
[INFO] +- com.heroku.sdk:heroku-jdbc:jar:0.1.1:compile
[INFO] +- org.glassfish:javax.faces:jar:2.2.13:compile
[INFO] +- com.sun.faces:jsf-impl:jar:2.1.2:compile
[INFO] +- javax.servlet:jstl:jar:1.2:compile
[INFO] \- taglibs:standard:jar:1.1.2:compile

【问题讨论】:

    标签: java jsf heroku


    【解决方案1】:

    我对 pom 和 web xml 文件进行了一些更改,并且能够启动容器。

    新的 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/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.example</groupId>
        <version>1.0-SNAPSHOT</version>
        <artifactId>maven_webType_example</artifactId>
        <packaging>war</packaging>
        <dependencies>
            <dependency>            
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-server</artifactId>
                <version>9.3.7.v20160115</version>
                <optional>true</optional>
            </dependency>
            <!--<dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-jsp-2.1</artifactId>
                <version>7.5.4.v20111024</version>
            </dependency>-->
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-webapp</artifactId>
                <version>9.3.7.v20160115</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-deploy</artifactId>
                <version>9.3.7.v20160115</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-digester3</artifactId>
                <version>3.2</version>
            </dependency>
            <!--<dependency>
                <groupId>org.apache.tomcat</groupId>
                <artifactId>tomcat-jasper</artifactId>
                <version>9.0.0.M3</version>
            </dependency>-->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-web-api</artifactId>
                <version>7.0</version>
            </dependency>
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-api</artifactId>
                <version>7.0</version>
            </dependency>
            <dependency>
                <groupId>javax.faces</groupId>
                <artifactId>javax.faces-api</artifactId>
                <version>2.2</version>
            </dependency>   
            <dependency>
                <groupId>javax.faces</groupId>
                <artifactId>jsf-impl</artifactId>
                <version>1.2_15</version>
            </dependency>      
            <dependency>
                <groupId>com.heroku.sdk</groupId>
                <artifactId>heroku-jdbc</artifactId>
                <version>0.1.1</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.web</groupId>
                <artifactId>el-impl</artifactId>
                <version>2.2</version>
            </dependency>
            <!--<dependency>
                <groupId>org.glassfish</groupId>
                <artifactId>javax.faces</artifactId>
                <version>2.2.13</version>
            </dependency>
            <dependency>
                <groupId>com.sun.faces</groupId>
                <artifactId>jsf-impl</artifactId>
                <version>2.2.13</version>
            </dependency>-->       
            <dependency>
                <groupId>taglibs</groupId>
                <artifactId>standard</artifactId>
                <version>1.1.2</version>
            </dependency>
    
        </dependencies>
        <build>
    
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.5.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>                    
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.10</version>
                    <executions>
                        <execution>
                            <id>copy-dependencies</id>
                            <phase>package</phase>
                            <goals><goal>copy-dependencies</goal></goals>
                            <configuration>
                                <artifactItems>
                                    <artifactItem>
                                        <groupId>com.githum.jsimone</groupId>
                                        <artifactId>webapp-runner</artifactId>
                                        <destFileName>webapp-runner.jar</destFileName>
                                        <version>7.0.27.1</version>                                  
                                    </artifactItem>
                                </artifactItems>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>appassembler-maven-plugin</artifactId>
                    <version>1.1.1</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>assemble</goal>
                            </goals>
                            <configuration>
                                <assembleDirectory>target</assembleDirectory>
                                <generateRepository>true</generateRepository>
                                <programs>
                                    <program>
                                        <mainClass>root.Main</mainClass>
                                        <name>webapp</name>
                                    </program>
                                </programs>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    </project>
    

    新的 web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.1" 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_3_1.xsd">
        <context-param>
            <param-name>javax.faces.PROJECT_STAGE</param-name>
            <param-value>Development</param-value>
        </context-param>
        <context-param>
            <param-name>javax.el.expressionFactory</param-name>
            <param-value>javax.el.ExpressionFactoryImpl</param-value>
        </context-param>
        <context-param>
            <param-name>com.sun.faces.forceLoadConfiguration</param-name>
            <param-value>true</param-value>
        </context-param>
        <container-descriptor>
            <prefer-web-inf-classes>true</prefer-web-inf-classes>
            <!--<prefer-application-resources>
                <resource-name>javax.faces.*</resource-name>
                <resource-name>com.sun.faces.*</resource-name>
                <resource-name>com.bea.faces.*</resource-name>
                <resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
                <resource-name>META-INF/services/com.sun.faces.spi.FacesConfigResourceProvider</resource-name>
            </prefer-application-resources>-->
        </container-descriptor>
        <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/*.xhtml</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30 
            </session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>index.xhtml</welcome-file>
        </welcome-file-list>
        <listener>
            <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
        </listener>
    
    </web-app>
    

    唯一的问题是 XML 无法在页面上呈现(新问题)。

    我会搜索一下新的错误:

    SEVERE: Unable to obtain InjectionProvider from init time FacesContext. Does this container implement the Mojarra Injection SPI?
    

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多