使用jersy获取java restful webservices的404错误

时间:2015-08-25 13:27:03

标签: java rest jersey-2.0

我是Restful webservices的新手,当我尝试编写weebservice时,我收到404错误。如果我做错了,你能告诉我吗?

的web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>RestFulWebService</display-name>


  <servlet>
        <servlet-name>jersey-serlvet</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.api.core.packages</param-name>
            <param-value>restful.service</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
</web-app>

Java类:

package restful.service;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;


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

    @GET
    @Produces(MediaType.TEXT_XML)
    public String getMsg() {

        String output = "Jersey say : ";

        return output;

    }
}

罐:

我已经包括了所有的罐子(我在开始时遇到的问题已经解决了)

The url i am using is 

http://localhost:8080/RestFulWebService/rest/hello

1 个答案:

答案 0 :(得分:0)

查看您的web.xml文件,您的服务似乎已部署在

<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

尝试使用此网址

http://localhost:8080/rest/hello

OR

通过更改web.xml

来修改servlet-mapping
<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/RestFulWebService/rest/*</url-pattern>
</servlet-mapping>

修改

您的getMsg()方法正在生成MediaType.TEXT_XML,并且由于您的output不是XML格式,因此该服务无法将响应表示为所请求的XML。

解决方案1 ​​ 按任何文本媒体类型编辑注释值,例如:

@GET
@Produces(MediaType.TEXT_PLAIN)
public String getMsg() {
    String output = "Jersey say : ";

    return output;
}

解决方案2 更改您的output,例如:

@GET
@Produces(MediaType.TEXT_PLAIN)
public String getMsg() {
    String output = "<something>Jersey say : </something>";

    return output;
}