반응형
이전에 블로깅했던 2009/06/05 - [나만의 작업] - Jersey의 Exception Handling 에 대해 조금 더 자세히 블로깅을 해봅니다.
Jersey에서 Excpetion Handling하는 방법들
1) WebApplication을 상속한 새로운 클래스인 NotFoundException을 생성하여 던지기
NotFoundException을 throw하는 예
이방법은 WebApplicationException을 상속받은 NotFoundException을 이용하는 방법
이렇게 status를 나타내고 response를 전송할때 타입까지 정해서 보내줄 수 있다.
2) 직접 WebApplicationException에 Response status로 바로 던지기.
3) ExceptionMapper 이용하는 예
클래스가 @Provider로 정의되어 있고 javax.persistence.EntityNotFoundException의 toResponse메소드를 이용해 Excpetion을 Response의 status로 매핑해서 이용할 수 있다.
참고
-------------------------------------------------------------------------------------------------------------------------------------
1) Jersey 1.0.3 UserGuide 내용 중의 " WebApplicationException and Mapping Exception to Responses"
2) JAX-RS / Jersey how to customize error handling?
3) Putting Java to REST
Jersey에서 Excpetion Handling하는 방법들
1) WebApplication을 상속한 새로운 클래스인 NotFoundException을 생성하여 던지기
NotFoundException을 throw하는 예
Example 1.25. Throwing Jersey specific exceptions to control response
1 @Path("items/{itemid}/")
2 public Item getItem(@PathParam("itemid") String itemid) {
3 Item i = getItems().get(itemid);
4 if (i == null)
5 throw new NotFoundException("Item, " + itemid + ", is not found");
6
7 return i;
8 }
1 @Path("items/{itemid}/")
2 public Item getItem(@PathParam("itemid") String itemid) {
3 Item i = getItems().get(itemid);
4 if (i == null)
5 throw new NotFoundException("Item, " + itemid + ", is not found");
6
7 return i;
8 }
이방법은 WebApplicationException을 상속받은 NotFoundException을 이용하는 방법
Example 1.26. Jersey specific exception implementation
1 public class NotFoundException extends WebApplicationException {
2
3 /**
4 * Create a HTTP 404 (Not Found) exception.
5 */
6 public NotFoundException() {
7 super(Responses.notFound().build());
8 }
9
10 /**
11 * Create a HTTP 404 (Not Found) exception.
12 * @param message the String that is the entity of the 404 response.
13 */
14 public NotFoundException(String message) {
15 super(Response.status(Responses.NOT_FOUND).
16 entity(message).type("text/plain").build());
17 }
18
19 }
1 public class NotFoundException extends WebApplicationException {
2
3 /**
4 * Create a HTTP 404 (Not Found) exception.
5 */
6 public NotFoundException() {
7 super(Responses.notFound().build());
8 }
9
10 /**
11 * Create a HTTP 404 (Not Found) exception.
12 * @param message the String that is the entity of the 404 response.
13 */
14 public NotFoundException(String message) {
15 super(Response.status(Responses.NOT_FOUND).
16 entity(message).type("text/plain").build());
17 }
18
19 }
이렇게 status를 나타내고 response를 전송할때 타입까지 정해서 보내줄 수 있다.
2) 직접 WebApplicationException에 Response status로 바로 던지기.
@Path("accounts/{accountId}/")
public Item getItem(@PathParam("accountId") String accountId) {
// An unauthorized user tries to enter
throw new WebApplicationException(Response.status.UNAUTHORIZED);
}
3) ExceptionMapper 이용하는 예
Example 1.27. Mapping generic exceptions to responses
1 @Provider
2 public class EntityNotFoundMapper implements
3 ExceptionMapper<javax.persistence.EntityNotFoundException> {
4 public Response toResponse(javax.persistence.EntityNotFoundException ex) {
5 return Response.status(404).
6 entity(ex.getMessage()).
7 type("text/plain").
8 build();
9 }
10 }
1 @Provider
2 public class EntityNotFoundMapper implements
3 ExceptionMapper<javax.persistence.EntityNotFoundException> {
4 public Response toResponse(javax.persistence.EntityNotFoundException ex) {
5 return Response.status(404).
6 entity(ex.getMessage()).
7 type("text/plain").
8 build();
9 }
10 }
클래스가 @Provider로 정의되어 있고 javax.persistence.EntityNotFoundException의 toResponse메소드를 이용해 Excpetion을 Response의 status로 매핑해서 이용할 수 있다.
참고
-------------------------------------------------------------------------------------------------------------------------------------
1) Jersey 1.0.3 UserGuide 내용 중의 " WebApplicationException and Mapping Exception to Responses"
2) JAX-RS / Jersey how to customize error handling?
3) Putting Java to REST
반응형
'backend' 카테고리의 다른 글
[책] 함수형 사고 - Chapter 2. 전환 - 2.4 골치 아프게 비슷비슷한 이름들. (0) | 2018.07.22 |
---|---|
[책] 함수형 사고 - Chapter 2. 전환 (0) | 2018.07.22 |
[책] 함수형 사고 - Chapter 1. 왜 (0) | 2018.07.15 |
테스트 코드 작성 관련 링크 (0) | 2010.02.08 |
[Jersey] Building Responses (4) | 2009.07.21 |
[Jersey] Representation and Java Types (0) | 2009.07.16 |
Jersey의 JSON Support (2) | 2009.06.08 |
Jersey의 Exception Handling (0) | 2009.06.05 |