tomcat的泽西休息服务不能与web.xml中的欢迎文件配置一起使用

时间:2016-11-22 20:23:47

标签: java eclipse rest tomcat jersey

我正在尝试使用tomcat学习泽西休息服务,但在尝试渲染index.html然后发出ajax请求来调用jersey服务时遇到问题。 WebContent

这是我的web.xml

<?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">
<display-name>rest</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>


    <servlet>
        <servlet-name>Rest With Jersey2</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.rest.jersey2</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Rest With Jersey2</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
</web-app>

这是我的球衣服务

package com.rest.jersey2;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;

@Path("/hello")
public class Test {

    @GET
    @Produces("application/json")
    public Response defaultReverser()  {

        String result = "" ;
        return Response.status(200).entity(result).build();
    }


}

我想从index.html中包含的first.js访问以请求

$.ajax({
        url: "/hello",
        type: "GET",
        success: function(){ 
            alert("success");
        },
        error: function(){ 
            alert("error!");
        } 
    });

当我在tomcat服务器上运行我的休息应用程序时,它会渲染index.html但是在单击按钮后发出404 Not found,请求url / hello的ajax来调用jersey服务。控制台中没有错误消息,服务器正常启动。

请指导我让它发挥作用!

编辑:如果我独立测试我的休息服务,则无法使用web.xml中的url mapping / rest / *。但是,如果我使用/ *,它可以工作,但在这种情况下,我无法显示欢迎文件。

当我尝试使用rest服务渲染index.html时,此页面无法找到index.html中包含的first.js buti尝试将first.js放在许多目录中,包括与源文件相同的休息服务。

1 个答案:

答案 0 :(得分:1)

我认为您可以做的第一件事就是独立测试您的休息服务。一旦看到它工作,你检查URL,看看你的javascript代码是否指向确切的路径。

由于您“未找到” - 我会说您可能没有针对正确的服务URI。也许是因为你在jquery中传递“/ hello”,你的服务映射在rest / *下。 (所以可能/ rest /你好是你的URL)。如果没有,请使用您服务的完整URL进行检查(例如:localhost:8080 / rest / rest / hello)。请记住,URL将是主机:port / app / mappedurl / serviceurl

如果仍有问题,请查看此球衣服务(https://github.com/NicolasFonte/rentals/blob/master/src/main/java/nicolas/trial/rest/RentalResource.java)在此示例(https://github.com/NicolasFonte/rentals/blob/master/src/main/webapp/js/rentals.js)中通过JQuery进行连接,您几乎可以解决它。