java - 使用 jersey 的 java Restful Web 服务出现 404 错误

标签 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;

    }
}

jar :

我已经包含了所有的 jar (我一开始遇到的问题已经解决了)

The url i am using is 

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

最佳答案

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

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

试试这个网址

http://localhost:8080/rest/hello

通过更改 servlet-mapping 来编辑 web.xml:

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

编辑

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

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

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

    return output;
}

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

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

    return output;
}

关于java - 使用 jersey 的 java Restful Web 服务出现 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32205314/

相关文章:

java - 使用 Spring Security 登录页面进行表单验证

java - Jersey XML 缩进

amazon-web-services - 如何让 JAXRS 2 (Jersey) 详细 Trace 与 ResourceConfig 配合使用

java - 从 Calabash(Ruby) 迁移到 Appium(Java)

java - 线程同步Java

java - SSLSocket 握手异常没有共同的密码套件

java - Apache Camel 和 CXF : Mutlitple cxf:rsServer tags . 。这可能吗?

c# - 如何使用注释覆盖同一方法上的 Web api 路由

azure - Microsoft 数据工厂 Azure 中的 Web 事件 - GET header 和传递参数(当前显示 null)

java - 如何使用 Grizzly 嵌入式服务器在 Jersey-Spring 中配置现有的应用程序上下文?