2012-05-06 2 views
0

저는 JBoss ESB 4.10과 동등한 JBoss SOA-P 5.2를 사용하고 있습니다. 또한 ESB 서비스는 웹 사이트의 요청을 수신하는 Http Gateway를 사용합니다.JBoss SOA-Platform 5.2의 ESB 작업에서 예외가 발생하면 JSON을 반환 할 수 있습니까?

해피 - 경로가 모두 좋습니다. HttpRequest에 따라 웹 사이트 응용 프로그램에 JSON 응답을 반환 할 수 있습니다. 문제는 자바 코드가 액션 파이프 라인에서 예외를 던지는 예외적 인 경로에서 비롯됩니다. 액션 파이프 라인에서 생성 된 예외를 잡아 내고 반환 된 메시지를 웹 애플리케이션에 맞게 사용자 정의 할 수있는 방법이 있습니까?

고맙습니다.

+0

하나 개 더 추가 : 나는 @OnException 방법에 ESB 메시지를 수정하는 시도했지만 실패했다. –

답변

0

RedHat에서는 RestEasy를 사용하여 ServiceInvoker를 통해 HTTP 요청을 수락하고 ESB 서비스를 인보이스 할 수 있다고 제안했습니다.

0

오류 예외 메시지에서 메시지를 설정할 수 있습니다. (ActionProcessingFaultException)

예 :

public Message process(Message message) throws ActionProcessingException { 
    try { 
     Object obj = payloadProxy.getPayload(message); 
     String value = ""; 
     if(obj instanceof String) { 
      value = (String) obj; 
     } else if(obj instanceof byte[]) { 
      value = new String((byte[])obj); 
     } 
     RouteRequest req = gson.fromJson(value, RouteRequest.class); 
     if(req == null) { 
      logger.warn("Invalid JSON Request to Solve Service. "+value); 
      throw new ActionProcessingException("Invalid JSON Request to Solve Service."); 
     } 
     payloadProxy.setPayload(message, req); 
    } catch (MessageDeliverException e) { 
     logger.error("Error handling with payload", e); 
     throw new ActionProcessingException("Error handling with payload", e); 
    } catch (Exception e) { 
     String htmlHelp = "<html><body><h1>Bad Format</h1></body></html>"; 
     message.getBody().add(htmlHelp); 
     throw new ActionProcessingFaultException(message, "Error converting Json Object."); 
    } 

    return message; 
} 
관련 문제