I am trying to create a simple application with Jersey 2.3 serving a jsp page in standalone Tomcat. I tried many ways from the Internet, but most of them explain using Jersey with Grizzly, not Tomcat. Therefore, I could not find a solution / explanation of my problem, why the jsp application is not supported by my application. Does anyone know what is wrong here or not? Below you will find my application.
pom.xml
... <dependencies> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet-core</artifactId> <version>2.3</version> </dependency> <dependency> <groupId>org.glassfish.jersey.ext</groupId> <artifactId>jersey-mvc-jsp</artifactId> <version>2.3.1</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.0</version> <executions> <execution> <id>tomcat-run</id> <goals> <goal>exec-war-only</goal> </goals> <phase>package</phase> <configuration> <path>/jhello</path> <enableNaming>false</enableNaming> <finalName>jhello-standalone.jar</finalName> <charset>utf-8</charset> </configuration> </execution> </executions> </plugin> </plugins> </build>
web.xml
<filter> <filter-name>jhello</filter-name> <filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.granatasoft.playground.jersey</param-value> </init-param> <init-param> <param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name> <param-value>/WEB-INF/views</param-value> </init-param> <init-param> <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name> <param-value>/(decorators|scripts|styles|resources|(WEB-INF/views))/.*</param-value> </init-param> </filter> <filter-mapping> <filter-name>jhello</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
HelloJersey.java
package com.granatasoft.playground.jersey; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.glassfish.jersey.server.mvc.Viewable; @Path("/hello") public class HelloJersey { @GET @Produces(MediaType.APPLICATION_JSON) public String sayJsonHello() { return "{'hello': 'jersey'}"; } @GET @Produces(MediaType.TEXT_HTML) public Viewable sayHtmlHello() { return new Viewable("hello"); } }
hello.js
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Hello JSP</title> </head> <body> <h1>Hello JSP</h1> </body> </html>
source share