2014-09-21 3 views
0

Jersey 응용 프로그램을 만들려고하는데 출력을 Json 형식의 웹 브라우저에 전달하고 싶습니다. 아래는 코드입니다. XML 형식으로 만 데이터를 전달할 수 있으며 "application/json"형식으로 변경하면 "HTTP 상태 500 - 내부 서버 오류"가 나타납니다. 어떤 충고? 감사. 저지 - 나머지 API (Json Format)

import java.net.URISyntaxException; 
import javax.ws.rs.Consumes; 
import javax.ws.rs.DELETE; 
import javax.ws.rs.GET; 
import javax.ws.rs.POST; 
import javax.ws.rs.PUT; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 

@Path("/emp") 
public class EmployeeService { 

    @GET 
    @Path("/get/{empID}") 
    @Produces({"application/json"}) 
    public Employee getEmployee(@PathParam("empID") String empID){ 
     Employee employee = new com.rest.employee.model.Employee(); 
     employee.setEmpID(empID); 
     employee.setName("George"); 
     employee.setEmail("[email protected]"); 
     return employee; 
     } 
} 

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 

@XmlAccessorType(XmlAccessType.NONE) 
@XmlRootElement(name="employee") 

public class Employee { 
    public String empID; 
    public String name; 
    public String email; 

    @XmlElement(required=true) 
    public String getEmpID() { 
     return empID; 
    } 
    public void setEmpID(String empID) { 
     this.empID = empID; 
    } 

    @XmlElement(required=true) 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 

    @XmlElement(required=true) 
    public String getEmail() { 
     return email; 
    } 
    public void setEmail(String email) { 
     this.email = email; 
    } 
} 
+0

귀하의 json 요청 내용을 표시 할 수 있습니까? 그리고 가능한 경우 콘솔 출력에는이 경우 많은 정보가 있습니다 – Vihar

+0

일반적으로 XML 출력을 얻으려면 @Produces ({ "application/xml"})를 사용합니다. 하지만 이제 Json 파일을 가져오고 싶습니다. 그래서 그것을 @Produces ({ "application/json"})로 바꾸어 오류로 이끈다. 요청은 empID, 이름 및 전자 메일을 통해 이루어져야합니다. – user3205874

+0

@Consumes ({ "application/json"})을 추가하십시오. – Vihar

답변

0

코드는 '거의'잘보고 예상대로 나를 위해 작동하지만, 직렬화 Employee 구현해야합니다 당신. 나는 지금 당장 다른 문제를 볼 수 없기 때문에 문제는 내가 생각하기에 다른 곳이다.

당신은 XML에서 JSON으로 변경 했으므로 더 이상 작동하지 않는다고했습니다. 그래서 나는 JSON에 대한 의존성을 놓친다 고 생각한다. 확인하십시오 ...

사실, 누락 된 종속성으로 인해 500이 나오지 않아야합니다. ExceptionMapper을 추가했으며 자신이 500을 던진 것은 사실 일 수 있습니까?

+0

전체 프로젝트에서이 2 개의 파일 만 있습니다. 그래서 나는 그 실수가 혼자 던질 것이라고 생각하지 않는다. 최신 유니폼 jar 파일 (2.12)을 사용하고 있기 때문에 가능합니까? 최신 저지에서 형식이 바뀔 수도 있다고 생각합니다. 당신이하는 코드를 업로드 해 주시겠습니까? 감사. – user3205874

+0

정말 이상합니다. 일치하는 마샬 러가없는 경우 E500 (내부 서버 오류) 대신 E406 (허용되지 않음)을 받아야합니다. 실제로 2 개의 파일 (Employee.java, EmployeeService.java)을 가지고 있다면 Employee가 XML로 직렬화 된 것을 본 적이 없습니다.) ... 요즘 예제를 제공합니다 ... – zyexal