【发布时间】:2013-02-22 12:37:22
【问题描述】:
我正在为 Web 服务使用 JAX-RS 的 jersey 实现。我对这个 JAX-RS 很陌生。
我正在尝试在服务中添加一个方法,该方法接受一个 Employee 对象并根据 Employee 对象值返回员工 ID(为此有一个数据库命中)。
遵循Restful原则,我将方法设为@GET,并提供如下所示的url路径:
@Path("/EmployeeDetails")
public class EmployeeService {
@GET
@Path("/emp/{param}")
public Response getEmpDetails(@PathParam("param") Employee empDetails) {
//Get the employee details, get the db values and return the Employee Id.
return Response.status(200).entity("returnEmployeeId").build();
}
}
出于测试目的,我写了这个客户端:
public class ServiceClient {
public static void main(String[] args) {
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource(getBaseURI());
Employee emp = new Employee();
emp.name = "Junk Name";
emp.age = "20";
System.out.println(service.path("rest").path("emp/" + emp).accept(MediaType.TEXT_PLAIN).get(String.class));
}
private static URI getBaseURI() {
return UriBuilder.fromUri("http://localhost:8045/AppName").build();
}
}
当我运行它时,我收到错误:Method, public javax.ws.rs.core.Response com.rest.EmployeeService.getEmpDetails(com.model.Employee), annotated with GET of resource, class com.rest.EmployeeService, is not recognized as valid resource method.
编辑:
型号:
package com.model;
public class Employee {
public String name;
public String age;
}
请让我知道问题出在哪里,我是这方面的初学者,正在努力理解这些概念:(
【问题讨论】:
-
您确定不想传入
employeeId并返回Employee对象。 -
是的,我知道传递其他详细信息并获取 ID 是不寻常的,但这就是要求。如果有多个员工,则需要根据他们的加入日期获取最年长的员工,因此我确信我需要传递员工对象并获取员工 ID。你能告诉我如何使这项工作:(
-
将
EmployeeService类的定义添加到问题中,包括任何类级别的注释。 -
完成。请检查并让我知道问题
标签: java web-services rest service jax-rs