MVC and Tomcat Jersey

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> 
+6
source share
2 answers

You are using the old property name ( com.sun.jersey.config.property.JSPTemplatesBasePath ) for the base path. Try using a new one.

 jersey.config.server.mvc.templateBasePath.jsp 

(see properties in JspMvcFeature and MvcFeature ).

Another property ( com.sun.jersey.config.property.WebPageContentRegex ) is not currently supported in Jersey 2.x.

+6
source

Here are some Jersey filter initialization options that you might want to look at (I use Jersey 2.5 inside Tomcat 7 - the rest of my web.xml is similar to yours):

  <init-param> <param-name>jersey.config.server.mvc.templateBasePath.jsp</param-name> <param-value>/WEB-INF/jsp</param-value> </init-param> <init-param> <param-name>jersey.config.server.provider.classnames</param-name> <param-value>org.glassfish.jersey.server.mvc.jsp.JspMvcFeature</param-value> </init-param> <init-param> <param-name>jersey.config.server.tracing</param-name> <param-value>ALL</param-value> </init-param> <init-param> <param-name>jersey.config.servlet.filter.staticContentRegex</param-name> <param-value>(/index.jsp)|(/(content|(WEB-INF/jsp))/.*)</param-value> </init-param> 

The JspMvcFeature parameter may be useful in your situation. You can also see the configuration of the static content, as well as the trace that you will definitely find at some point.

+2
source

Source: https://habr.com/ru/post/956285/


All Articles