Могу ли я вернуть JSON при возникновении исключения в действиях ESB на JBoss SOA-Platform 5.2?

Я использую JBoss SOA-P 5.2, который должен быть эквивалентен JBoss ESB 4.10. И наша служба ESB использует Http-шлюз, который прослушивает запросы с веб-сайта.

Счастливый путь хорош: мы можем вернуть ответ JSON приложению веб-сайта в соответствии с HttpRequest. Проблема возникает из-за исключительного пути, когда код Java выдает какое-то исключение из конвейера действий. Есть ли способ перехватить исключение, сгенерированное в конвейере действий, и настроить возвращаемое сообщение для веб-приложения?

Большое спасибо!


person James Gan    schedule 06.05.2012    source источник
comment
Еще одно дополнение: я пытался изменить сообщение ESB в методе @OnException, но потерпел неудачу.   -  person James Gan    schedule 07.05.2012


Ответы (2)


RedHat предлагает использовать RestEasy для приема HTTP-запросов и выставления счетов за обслуживание ESB через ServiceInvoker.

person James Gan    schedule 16.05.2012

Сообщение может быть установлено в сообщении об исключении неисправности. (ActionProcessingFaultException)

Ex:

    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;
}
person Henrique    schedule 23.08.2012