我有一个 Spring Boot JSF 应用程序,从 Netbeans IDE 中启动时该应用程序可以正确运行。当我将 Maven 项目打包在一个可运行的 jar 中并询问 URL 时,我遇到以下错误 [java.lang.IllegalStateException: 找不到工厂 javax.faces.context.FacesContextFactory 的备份]。
\n\n那么在单个可运行的 jar 中部署 spring boot jsf 应用程序的正确方法是什么?我已经在互联网上搜索了 4 个小时来寻找解决方案。徒然。我找到了在 Netbeans 中工作的解决方案,但是当我从中生成一个可运行的 jar 时,它们崩溃了。
\n\n这是我的环境:
\n\n[web.xml]
\n\n <?xml version="1.0" encoding="UTF-8"?>\n<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">\n <!-- la servlet FacesServlet -->\n <servlet>\n <servlet-name>Faces Servlet</servlet-name>\n <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n <load-on-startup>1</load-on-startup>\n </servlet>\n</web-app>\nRun Code Online (Sandbox Code Playgroud)\n\n[faces-config.xml]
\n\n <?xml version=\'1.0\' encoding=\'UTF-8\'?>\n<faces-config version="2.2"\n xmlns="http://xmlns.jcp.org/xml/ns/javaee"\n xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">\n <application>\n <!-- pour que Spring puisse g\xc3\xa9rer les expression #{expression} dans les pages JSF -->\n <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>\n <!-- le fichier des messages -->\n <resource-bundle>\n <base-name>\n messages\n </base-name>\n <var>msg</var>\n </resource-bundle>\n <message-bundle>messages</message-bundle>\n </application>\n</faces-config>\nRun Code Online (Sandbox Code Playgroud)\n\n【引导类】
\n\n package web.boot;\n\nimport org.springframework.boot.SpringApplication;\nimport web.config.JsfConfig;\n\npublic class Boot {\n\n public static void main(String[] args) {\n SpringApplication.run(JsfConfig.class, args);\n }\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n[配置类]
\n\n package web.config;\n\nimport config.MetierDaoJpaConfig;\nimport java.util.concurrent.TimeUnit;\nimport javax.faces.webapp.FacesServlet;\nimport org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;\nimport org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;\nimport org.springframework.boot.web.servlet.ServletRegistrationBean;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.ComponentScan;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.Import;\n\n@Configuration\n@Import({MetierDaoJpaConfig.class})\n@ComponentScan({"web.beans"})\n// ******************************************************************************\n// \xc3\xa0 utiliser conjointement avec [WEB-INF/faces-config.xml et WEB-INF/web.xml]\n// ******************************************************************************\npublic class JsfConfig {\n\n @Bean\n public ServletRegistrationBean servletRegistrationBean() {\n FacesServlet servlet = new FacesServlet();\n ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(servlet,"*.xhtml");\n return servletRegistrationBean;\n }\n\n @Bean\n public EmbeddedServletContainerFactory servletContainer() {\n TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();\n factory.setPort(8080);\n factory.setSessionTimeout(10, TimeUnit.MINUTES);\n return factory;\n }\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n[pom.xml]
\n\n<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 \n http://maven.apache.org/maven-v4_0_0.xsd">\n\n <modelVersion>4.0.0</modelVersion>\n <groupId>istia.st</groupId>\n <artifactId>mv-pam-primefaces-multipages-springboot-eclipselink-tomcat-02</artifactId>\n <packaging>jar</packaging>\n <version>1.0-SNAPSHOT</version>\n <name>mv-pam-primefaces-multipages-springboot-eclipselink-tomcat-02</name>\n <url>http://maven.apache.org</url>\n\n\n <parent>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-parent</artifactId>\n <version>1.4.0.RELEASE</version>\n </parent>\n\n <dependencies>\n <!-- JSP API -->\n <dependency>\n <groupId>org.apache.tomcat.embed</groupId>\n <artifactId>tomcat-embed-jasper</artifactId>\n </dependency>\n <!-- Spring web -->\n <dependency>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-web</artifactId>\n </dependency>\n\n <!-- JSF -->\n <dependency>\n <groupId>com.sun.faces</groupId>\n <artifactId>jsf-api</artifactId>\n <version>2.2.13</version>\n </dependency>\n <dependency>\n <groupId>com.sun.faces</groupId>\n <artifactId>jsf-impl</artifactId>\n <version>2.2.13</version>\n </dependency>\n\n <!-- https://mvnrepository.com/artifact/org.primefaces/primefaces -->\n <dependency>\n <groupId>org.primefaces</groupId>\n <artifactId>primefaces</artifactId>\n <version>6.0</version>\n </dependency>\n\n <!-- JSR-330 --> \n <dependency>\n <groupId>javax.inject</groupId>\n <artifactId>javax.inject</artifactId>\n <version>1</version>\n </dependency>\n\n <!-- couches basses -->\n <dependency>\n <groupId>${project.groupId}</groupId>\n <artifactId>mv-pam-springboot-eclipselink</artifactId>\n <version>${project.version}</version>\n </dependency>\n </dependencies>\n\n <build>\n <plugins>\n <plugin>\n <groupId>org.apache.maven.plugins</groupId>\n <artifactId>maven-surefire-plugin</artifactId>\n <version>2.18.1</version>\n </plugin>\n <plugin>\n <artifactId>maven-assembly-plugin</artifactId>\n <configuration>\n <archive>\n <manifest>\n <mainClass>web.boot.Boot</mainClass>\n </manifest>\n </archive>\n <descriptorRefs>\n <descriptorRef>jar-with-dependencies</descriptorRef>\n </descriptorRefs>\n </configuration>\n </plugin>\n </plugins>\n </build>\n\n <properties>\n <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n <maven.compiler.source>1.8</maven.compiler.source>\n <maven.compiler.target>1.8</maven.compiler.target>\n </properties>\n</project>\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
833 次 |
| 最近记录: |