Trying to write a web service.

When I try to write a REST web service, I use ServletContainer as shown in the code below, I get an error 404!

When trying to write a service without using the ServletContainer, but inheriting from HttpServlet and overriding the doGet method, the service works.

  • Why do I get error 404 when using ServltContainer and init param? What is missing in this code?

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <!-- //Подход работает! <servlet> <servlet-name>Service</servlet-name> <servlet-class>test.ServiceTest</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Service</servlet-name> <url-pattern>/service/get</url-pattern> </servlet-mapping> --> <servlet> //Подход не работет! <servlet-name>Service</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>test</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Service</servlet-name> <url-pattern>/service/get</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> </web-app> 

 @Path("/service")//Не работает public class ServiceTest{ @Path("/get") @Produces(MediaType.APPLICATION_JSON) public String getJSON(){ return "Hello"; } } @Path("/service")//Работает public class ServiceTest extends HttpServlet{ @Path("/get") @Produces(MediaType.APPLICATION_JSON) @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter print = resp.getWriter(); print.print("Hello"); } } 

enter image description here

0