java - Embedded Tomcat doesn't execute jsf pages -
solved: used wrong namespace, see explanation after post.
when trying run embedded tomcat , navigating jsf page, jsf tags rendered page , doesn't executed.
edit: added maven project to
https://github.com/traugott/embedded-tomcat-example-jsf-dont-work.git
simply clone with
git clone https://github.com/traugott/embedded-tomcat-example-jsf-dont-work.git
the file create tomcat embedded server is:
package launch; import java.io.file; import org.apache.catalina.context; import org.apache.catalina.core.aprlifecyclelistener; import org.apache.catalina.core.standardserver; import org.apache.catalina.startup.tomcat; public class main { public static void main(string[] args) throws exception { string webappdirlocation = "src/main/webapp/"; tomcat tomcat = new tomcat(); tomcat.setport(8080); tomcat.setbasedir("."); tomcat.gethost().setappbase("."); tomcat.setsilent(false); // add aprlifecyclelistener standardserver server = (standardserver) tomcat.getserver(); aprlifecyclelistener listener = new aprlifecyclelistener(); server.addlifecyclelistener(listener); context ctx = tomcat.addwebapp("/", new file(webappdirlocation).getabsolutepath()); tomcat.addservlet(ctx, "jsf_servlet", "javax.faces.webapp.facesservlet"); ctx.addservletmapping("*.xhtml", "jsf_servlet"); tomcat.start(); tomcat.getserver().await(); } }
the web.xml (under src/main/webapp/web-inf) is:
<?xml version="1.0" encoding="utf-8"?> <web-app version="2.5" 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_2_5.xsd"> <display-name>test</display-name> <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>*.xhtml</url-pattern> </servlet-mapping> <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>
the index.xhtml (under src/main/webapp/):
<?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:h="http://xmlns.jcp.org/jsf/html" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> <h:head> </h:head> <h:body> <h:outputtext value="hallo jsf-tomcat-embedded-welt"/> </h:body> </html>
and, @ last, pom.xml
<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.heroku.sample</groupid> <artifactid>embeddedtomcatsample</artifactid> <version>1.0-snapshot</version> <name>embeddedtomcatsample maven webapp</name> <url>http://maven.apache.org</url> <properties> <tomcat.version>7.0.34</tomcat.version> </properties> <dependencies> <dependency> <groupid>org.apache.tomcat.embed</groupid> <artifactid>tomcat-embed-core</artifactid> <version>${tomcat.version}</version> </dependency> <dependency> <groupid>org.apache.tomcat.embed</groupid> <artifactid>tomcat-embed-logging-juli</artifactid> <version>${tomcat.version}</version> </dependency> <dependency> <groupid>org.apache.tomcat.embed</groupid> <artifactid>tomcat-embed-jasper</artifactid> <version>${tomcat.version}</version> </dependency> <dependency> <groupid>org.apache.tomcat</groupid> <artifactid>tomcat-jasper</artifactid> <version>${tomcat.version}</version> </dependency> <dependency> <groupid>org.apache.tomcat</groupid> <artifactid>tomcat-jasper-el</artifactid> <version>${tomcat.version}</version> </dependency> <dependency> <groupid>org.apache.tomcat</groupid> <artifactid>tomcat-jsp-api</artifactid> <version>${tomcat.version}</version> </dependency> <dependency> <groupid>com.sun.faces</groupid> <artifactid>jsf-api</artifactid> <version>2.1.13</version> </dependency> <dependency> <groupid>com.sun.faces</groupid> <artifactid>jsf-impl</artifactid> <version>2.1.13</version> </dependency> <dependency> <groupid>javax.servlet</groupid> <artifactid>javax.servlet-api</artifactid> <version>3.0.1</version> </dependency> </dependencies> <build> <finalname>embeddedtomcatsample</finalname> <plugins> <plugin> <groupid>org.codehaus.mojo</groupid> <artifactid>appassembler-maven-plugin</artifactid> <version>1.1.1</version> <configuration> <assembledirectory>target</assembledirectory> <programs> <program> <mainclass>launch.main</mainclass> <name>webapp</name> </program> </programs> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>assemble</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
i don't know problem is, guess missed something.
can ?
i go it. i've used wrong namespace. in question above namespace still wrong (it namespace jsf 2.2). uploaded index.xhtml correct namespace github.
for versions given in pom.xml-file, namespace jsf html tags have be: http://java.sun.com/jsf/html
Comments
Post a Comment