Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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 由于kafka使用者代码,未创建SSLContext对象以调用第三方api_Java_Apache Kafka - Fatal编程技术网

Java 由于kafka使用者代码,未创建SSLContext对象以调用第三方api

Java 由于kafka使用者代码,未创建SSLContext对象以调用第三方api,java,apache-kafka,Java,Apache Kafka,我有一个包含Springboot kafka消费代码的api,可以自动使用来自kafka主题的消息。在消费消息之后,它调用在url中包含https的上游API 因此,调用上游api时,我需要SSLConext对象,但当我的api尝试创建SSLContext对象时,给出以下给定错误: java.security.KeyStoreException:访问信任库时出现问题java.io.IOException:密钥库被篡改或密码不正确 位于sun.security.ssl.TrustManagerFa

我有一个包含Springboot kafka消费代码的api,可以自动使用来自kafka主题的消息。在消费消息之后,它调用在url中包含https的上游API

因此,调用上游api时,我需要SSLConext对象,但当我的api尝试创建SSLContext对象时,给出以下给定错误:

java.security.KeyStoreException:访问信任库时出现问题java.io.IOException:密钥库被篡改或密码不正确 位于sun.security.ssl.TrustManagerFactoryImpl.engineInit(TrustManagerFactoryImpl.java:74) 位于javax.net.ssl.TrustManagerFactory.init(TrustManagerFactory.java:250) 位于org.apache.http.ssl.SSLContextBuilder.loadTrustMaterial(SSLContextBuilder.java:109) 位于com.rbc.fraud.fid.listener.AutoActionConsumerListener.getHttpClientInstance(AutoActionConsumerListener.java:157) 位于com.rbc.fraud.fid.listener.AutoActionConsumerListener.ConsumerAutoactionServiceMsg(AutoActionConsumerListener.java:87)

我正在使用Restemplate调用上游api。 我正在使用正确的密钥库文件和密码,但它仍然给出了错误

注意:当我评论kafka消费代码时,它工作正常,创建SSLContext对象,并且能够成功调用上游API

我正在使用Springboot ConsumerFactory、ConcurrentKafkalListenerContainerFactory、@KafkalListener来使用来自kafka主题的消息。 在我的代码中还实现了kerberos身份验证

卡夫卡消费代码运行良好,并使用这些消息。当我试图创建SSLConext对象来调用上游api时,它给出了一个错误


我在这一点上陷入了困境,没有得到任何解决方案。

您正在初始化ConsumerFactory设置ssl.truststore.password变量吗?是的,我正在使用System.setProperty(“javax.net.ssl.trustStorePassword”,trustStorePassword);您正在初始化RestTemplate吗?您可以添加这两种配置吗?SSLContext SSLContext=SSLContextBuilder.create().loadKeyMaterial(新文件(getClass().getClassLoader().getResource(“keystoreName.jks”).getFile(),“keyStorePassword.ToCharray(),“keyStorePassword.ToCharray()).loadTrustMaterial(acceptingTrustStrategy).useProtocol(“TLS”).build();CloseableHttpClient httpClient=HttpClientBuilder.create().setSSLContext(sslContext).setSSLHostnameVerifier(new NoopHostnameVerifier()).build();HttpComponents客户端HttpRequestFactory rf=新的HttpComponents客户端HttpRequestFactory(httpClient);RestTemplate RestTemplate=新的RestTemplate(rf);sslContextObjectCreationStatus=sslContextObjectCreationStatus+“RestTemplate对象状态:”+RestTemplate;ResponseEntity fmAlertRespEntity=restTemplate.exchange(“url”,HttpMethod.POST,新的HttpEntity(对象),String.class);