Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在apache camel rest api中进行自定义错误处理?_Java_Exception_Error Handling_Apache Camel - Fatal编程技术网

Java 如何在apache camel rest api中进行自定义错误处理?

Java 如何在apache camel rest api中进行自定义错误处理?,java,exception,error-handling,apache-camel,Java,Exception,Error Handling,Apache Camel,我有一个ApacheCamelRESTAPI,它从S3下载一个文件。我发送json输入(key、bucketname、accessKey、secretKey、region),以便编写URI。代码如下所示: public static class HelloRoute extends RouteBuilder { @Override public void configure() { rest("/") .post("f

我有一个ApacheCamelRESTAPI,它从S3下载一个文件。我发送json输入
(key、bucketname、accessKey、secretKey、region)
,以便编写URI。代码如下所示:

public static class HelloRoute extends RouteBuilder {
       
   @Override
   public void configure() {
     rest("/")
     .post("file-from-s3")
     .route()
     .setHeader(AWS2S3Constants.KEY, key)
     .to("aws2-s3://bucketname?accessKey=INSERT&secretKey=INSERT&region=INSERT&operation=getObject")
      .endRest();
          }
}

通过使用
JSONObject
作为主体,我能够在上述代码中提到的位置获得相应的json输入

如果假设,我在json输入中输入了错误的值(对于ex accessKey),我会得到如下错误

The AWS Access Key Id you provided does not exist in our records. (Service: S3, Status Code: 403, Request ID: 6923BEC55C1FD5F1, Extended Request ID: re5Rb7I76j9jvGqhSQXgjUoMwOZqsprg22bOGD+BDbuj0zrRrf0FceLaapvpR4KcNDY6GntNiF0=)
这对用户不是很友好。我如何为此编写一个自定义错误处理程序,它只会针对上述情况返回一条错误消息,例如
错误的访问密钥

您需要使用“onException”子句并在处理器中创建您自己的响应。见:

onException(thrownexception.class)
.handled(…)/>取决于您的需要是真是假
.继续(…)/>取决于您的需要正确与否
.进程(“进程1”)
.to(“直接:错误处理端点”)

您能发布完整的stacktrace以查看,如果异常直接是AmazonS3Exception
,或者被另一个异常包裹?@Bedla我收到了这个错误
org.apache.camel.ResolveEndpointFailedException:Failed to resolve endpoint:aws2-s3://accesskey=AKIARGSIOJPSQRMGNS5&secretkey=xxxxxx&bucketname=jcnu-2020-swanim-shukla®ion=us-east-1&operation=getObject到期to:UseAmCredentials设置为false,必须指定AmazonS3Client或accessKey和secretKey