我正在使用 JBoss SOA-P 5.2,它应该等同于 JBoss ESB 4.10。我们的 ESB 服务使用 Http Gateway,它监听来自网站的请求。
Happy-path 很好:我们可以根据 HttpRequest 向网站应用程序返回 JSON 响应。问题来自异常路径,其中 java 代码从操作管道中抛出了一些异常。有没有办法我们可以捕获在操作管道中生成的异常并将返回的消息自定义到 Web 应用程序?
非常感谢!
我正在使用 JBoss SOA-P 5.2,它应该等同于 JBoss ESB 4.10。我们的 ESB 服务使用 Http Gateway,它监听来自网站的请求。
Happy-path 很好:我们可以根据 HttpRequest 向网站应用程序返回 JSON 响应。问题来自异常路径,其中 java 代码从操作管道中抛出了一些异常。有没有办法我们可以捕获在操作管道中生成的异常并将返回的消息自定义到 Web 应用程序?
非常感谢!
该消息可以在故障异常消息中设置。(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;
}
RedHat 建议我们可以使用 RestEasy 来接受 HTTP 请求,并通过 ServiceInvoker 为 ESB 服务开票。