Java RESTful WebService Maven依赖性错误

时间:2018-01-11 04:44:09

标签: java rest web-services

最近我正在学习使用Java的RESTful Web服务,我创建了一个非常简单的示例并尝试了解,并且我在理解这种实现的某些行为时遇到了一些问题。我有一个名为WebServiceServer的类,其中包括:< / p>

package example.restful.server;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import example.restful.entity.Employee;

@Path("employee")
public class WebServiceServer {

    @GET
    @Path("id/{id}")
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    public Employee getEmployee(@PathParam("id") String id) {
        Employee employee = new Employee();
        employee.setId(id);
        employee.setState("NY");
        employee.setName("Tom");
        return employee;
    }
}

和一个名为Employee的实体类:

package example.restful.entity;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement()
public class Employee {
private String id;
private String name;
private String state;

public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getState() {
    return state;
}
下面的

是我的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>WebServiceRestful01</display-name>
    <servlet>
        <servlet-name>Jersey Webapp</servlet-name>
        <servlet-
class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>example</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Webapp</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
</web-app>

以下是我的maven依赖项:

<dependency>
    <groupId>asm</groupId>
    <artifactId>asm-all</artifactId>
    <version>3.3.1</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-bundle</artifactId>
    <version>1.14</version>
</dependency>
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20090211</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>1.17</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>1.17</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-client</artifactId>
    <version>1.17</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-servlet</artifactId>
    <version>1.17</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.7.5</version>
</dependency>

当我在tomcat服务器上运行此示例并键入以下url时,我得到以下结果: enter image description here

但是,现在我将org.glassfish.jersey.core jersey-client添加到我的maven依赖

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.25.1</version>
</dependency>

再次重试我收到错误: enter image description here

我没有改变一行代码但是在添加这个依赖项后我得到了一个错误,结果我必须添加另一个依赖项,即org.apache.cxf来解决问题

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-bundle-jaxrs</artifactId>
    <version>2.7.7</version>
</dependency>

我的问题是:在我的示例项目中添加org.glassfish.jersey.core jersey-client会导致原始函数不再起作用,为什么添加org.apache.cxf会解决问题?

0 个答案:

没有答案
相关问题