我正在尝试使用tomcat学习泽西休息服务,但在尝试渲染index.html然后发出ajax请求来调用jersey服务时遇到问题。
这是我的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放在许多目录中,包括与源文件相同的休息服务。
答案 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进行连接,您几乎可以解决它。