Apache骆驼代理需要问题

时间:2021-02-24 13:32:12

标签: apache-camel

我一直在研究apachecamel通过代理连接https URL(它只有proxyhost和proxyport)

我已经完成了下面的代码,其中包括路由器和 ssl 上下文和代理设置

public class HttpProxyRouter extends RouteBuilder{

    @Override
    public void configure() throws Exception {
        configureSslForHttp4(getContext());
        getContext().getProperties().put("http.proxyHost","mycompany.proxy");
        getContext().getProperties().put("http.proxyPort","8080");
        getContext().getProperties().put("http.proxySet","true");
        getContext().getProperties().put("http.proxyScheme","http");
        
        from("direct:httpproxy")
        .log("Invoking dhttpproxy").
        setHeader("CamelHttpMethod")
        .simple("GET")
        .setHeader("Accept")
        .simple(Constants.JSON_MEDIA_TYPE_VALUE)
        .setHeader(Exchange.HTTP_PATH)
        .simple("{{http.proxy.path}}")
        .setHeader(Exchange.REST_HTTP_QUERY)
        .simple("{{http.proxy.query.param}}")
        .to("{{http.proxy.url}}")
        .log("The Retrival of  subscription API response code is: ${header.CamelHttpResponseCode}, JSON Response ${body}")
        .end();
    }

    private void configureSslForHttp4(CamelContext camelContext) {
        KeyStore keystore = KeyStore.getInstance("JKS");
        keystore.load(new FileInputStream(new File("H:\\config/AL/certpath/cert/keystore.jks")), "HGVUYYEOEOENBWWMWMJ".toCharArray());
        KeyStore truststore = KeyStore.getInstance("JKS");
        truststore.load(new FileInputStream(new File("H:\\config/AL/certpath/cert/keystore.jks")), "HGVUYYEOEOENBWWMWMJ".toCharArray());
        KeyManagerFactory keyFactory = KeyManagerFactory.getInstance("SunX509");
        keyFactory.init(keystore, "HGVUYYEOEOENBWWMWMJ".toCharArray());
        TrustManagerFactory trustFactory = TrustManagerFactory.getInstance("SunX509");
        trustFactory.init(truststore);SSLContext sslcontext = SSLContext.getInstance("TLSv1");
        sslcontext.init(keyFactory.getKeyManagers(), trustFactory.getTrustManagers(), null);
        SSLSocketFactory factory = new SSLSocketFactory(sslcontext, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
        SchemeRegistry registry = new SchemeRegistry();
        final Scheme scheme = new Scheme("https4", 443, factory);
        registry.register(scheme);

        HttpComponent http4 = camelContext.getComponent("https4", HttpComponent.class);
        http4.setHttpClientConfigurer(new HttpClientConfigurer() {
            @Override
            public void configureHttpClient(HttpClientBuilder builder) {
                builder.setSSLSocketFactory(factory);
                /*HttpHost proxy = new HttpHost("mycompany.proxy",8080,"http");
                builder.setProxy(proxy);
                builder.setRoutePlanner(new DefaultProxyRoutePlanner(proxy));*/

                //using system proxy/*System.setProperty("http.proxyHost", "mycompany.proxy");
                /*  System.setProperty("http.proxyPort", "8080");
                builder.useSystemProperties();
                builder.setRoutePlanner(new SystemDefaultRoutePlanner(ProxySelector.getDefault()));*/

                Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
                        .register("https", factory)
                        .register("http", PlainConnectionSocketFactory.INSTANCE).build();
                
                HttpClientConnectionManager connectionManager = new  BasicHttpClientConnectionManager(registry);
                builder.setConnectionManager(connectionManager);
            }
        });
    }
}

但是当我运行它时出现以下错误

2921776 [http-nio-6723-exec-4] INFO route1 -Invoking dhttpproxy
2923209 [http-nio-6723-exec-4] ERROR org.apache.camel.processor.DefaultErrorHandler -Failed delivery for (MessageId: ID-SGSINSD822483-63063-1614168234655-0-3 on ExchangeId: ID-SGSINSD822483-63063-1614168234655-0-4). Exhausted after delivery attempt: 1 caught: org.apache.camel.http.common.HttpOperationFailedException: HTTP operation failed invoking https://mycompany.target with statusCode: 407
Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                                                                        Elapsed (ms)
[route1            ] 
[route1            ] [                                                                                                   ] [ 1432]
[route1            ] [log1              ] [log                                                                           ] [ 0]
[route1            ] [setHeader1        ] [setHeader[CamelHttpMethod]                                                    ] [ 0]
[route1            ] [setHeader2        ] [setHeader[Accept]                                                             ] [ 0]
[route1            ] [setHeader3        ] [setHeader[CamelHttpPath]                                                      ] [ 0]
[route1            ] [setHeader4        ] [setHeader[CamelRestHttpQuery]                                                 ] [ 0]
[route1            ] [to1               ] [{{http.proxy.url}}                                                            ] [ 1432]
---------------------------------------------------------------------------------------------------------------------------------------
Stacktrace
org.apache.camel.http.common.HttpOperationFailedException: HTTP operation failed invoking https://mycompany.target with statusCode: 407at org.apache.camel.component.http4.HttpProducer.populateHttpOperationFailedException(HttpProducer.java:284)at org.apache.camel.component.http4.HttpProducer.process(HttpProducer.java:192)at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)
 at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:542)at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)at org.apache.camel.processor.Pipeline.process(Pipeline.java:120)at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)at org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:529)at org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:497)at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:365)at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:497)at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:209)at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:139)at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:125)at com.adapter.controller.HttpProxyRestController.httpProxyHandler(HttpProxyRestController.java:27)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
 at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:105)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:89)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:107)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)
2923213 [http-nio-6723-exec-4] INFO com.adapter.controller.HttpProxyRestController -httpProxyHandler has been successfully complete!

我一直在努力解决这个问题,如果有人帮助我解决这个问题,我将不胜感激

谢谢

0 个答案:

没有答案