我一直在工作的Apache骆驼连接https URLS'通过提供TLS证书通过代理,但得到错误org.apache.http.conn.不支持的模式异常:超文本传输协议不支持
下面是驼峰路由和带有代理的ssl上下文
公共类HttpProxyRouter扩展了RouteBuilder{
@Override
public void configure() throws Exception {
configureSslForHttp4(getContext());
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 CCO subscription API response code is: ${header.CamelHttpResponseCode}, JSON Response ${body}")
.end();
}
private void configureSslForHttp4(CamelContext camelContext) {
KeyStore truststore = KeyStore.getInstance("JKS");
truststore.load(getClass().getClassLoader().getResourceAsStream("H:\config/AL/certpath/cert/keystore.jks"), "njfeijiiii".toCharArray());
TrustManagerFactory trustFactory = TrustManagerFactory.getInstance("SunX509");
trustFactory.init(truststore);
SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, 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);
builder.setProxy(proxy);
builder.setRoutePlanner(new DefaultProxyRoutePlanner(proxy));
Registry registry = RegistryBuilder.create().register("https", factory).build();
HttpClientConnectionManager connectionManager = new BasicHttpClientConnectionManager(registry);
builder.setConnectionManager(connectionManager);
}});
}
}
遇到错误
org.apache.catalina.core.Application Context logINFO:初始化Spring FrameworkServlet'调度Servlet'43953[超文本传输协议-nio-6723-exec-2]INFOorg.springframework.web.servlet.DispatcherServlet'调度Servlet':初始化开始44033[超文本传输协议-nio-6723-exec-2]INFOorg.springframework.web.servlet.DispatcherServlet-FrameworkServlet'调度Servlet':初始化完成80 ms44126[超文本传输协议-nio-6723-exec-2]INFOcom.db.gtbb.adapter.controller.HttpProxyRestController-httpProxyHandler已启动!44152[超文本传输协议-nio-6723-exec-2]INFO route1-调用dhttpprox44291[超文本传输协议-nio-6723-exec-2]INFOorg.apache.http.impl.execchain.RetryExec-I/O异常(org.apache.http.conn.Unsupport tedSchemeException)在处理{tls}的请求时捕获-
您需要将http协议添加到注册表:
SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslctxt, hnv);
Registry<ConnectionSocketFactory> lookup = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.INSTANCE)
.register("https", sslSocketFactory).build();
因为我计划从v.3升级httpclient依赖项。第1至第4节。5.13,但后来我意识到,许多功能已经改变,其中之一就是多线程HttpConnectionManager已经从最新版本中删除。当我搜索一个等价类时,stackoverflow HttpClient 4中的一篇文章——多线程HttpConnectionManager发生了什么事?,建议使用PoolightTPClientConnecti
在泽西1中,我们在类中有一个函数setConnectTimeout。 在jersey 2中,类用于缺少此函数的地方。 如何设置连接超时和读取超时在泽西2. x?
问题内容: 我的环境 Java 5 Spring2.5.5 DBCP数据源 (org.apache.commons.dbcp.BasicDataSource) 的MySQL 类似职位 使用Spring JDBC Oracle设置会话时区 链接 http://www.mysqlfaqs.net/mysql-faqs/General-Questions/How-to-manage-Time-Zone-
问题内容: 我正在使用PDO从MySQL服务器获取数据。我注意到的是:如果MySQL服务器不可用,则此代码返回异常 实际上 需要(相对)长的时间: 如果使用MySQL,则发生异常(SQLSTATE [HY000] [2003]无法在…上连接到MySQL服务器)仅需2分钟以上,而在PostgreSQL上则需要30秒(SQLSTATE [08006] [7]超时已过期) )。 我尝试使用PDO ::
我知道volley有一个重试策略,但我知道,这是针对套接字超时,而不是连接超时,Apache HttpClient有setConnectionTimeout和setSoTimeout方法,有人知道我是否要为volley framework设置连接超时吗。
我尝试制作示例代码来研究jms。我遇到了一些错误。所以,我搜索了一些解决错误的文章。我放弃了,因为我找不到如何使用spring4在ActiveMQ中设置代理。请给我一些建议或解决问题。 这是一个错误。 这是我的Spring配置文件。 而且,当我尝试设置使用ActiveMQConnectionFactory的CachingConnectionFactory时,它带来了错误。然而,在这个站点(http