我使用Apache Camel CXF作为生产者调用SOAP Webservice。我不使用Spring配置,但以编程方式执行所有操作(我是初学者,希望避免学习Spring和Apache Camel)。 Webservice使用带有自签名证书的SSL。我把它添加到信任,并希望能够将它添加到CxfEndpoint类似我如何与https4做到了:Apache Camel CXF:以编程方式添加TlsClientParameters
KeyStoreParameters ksp = new KeyStoreParameters();
ksp.setResource("src/main/resources/truststore.jks");
ksp.setPassword("...");
KeyManagersParameters kmp = new KeyManagersParameters();
kmp.setKeyStore(ksp);
kmp.setKeyPassword("...");
SSLContextParameters scp = new SSLContextParameters();
scp.setKeyManagers(kmp);
CamelContext context = new DefaultCamelContext();
context.addRoutes(routeBuilder);
HttpComponent httpComponent = context.getComponent("https4", HttpComponent.class);
httpComponent.setSslContextParameters(scp);
- 但似乎不与CxfComponent工作。我发现了很多关于使用Spring添加TlsClientParameters和配置CxfEndpoint的文档,例如:apache camel cxf https not working 和Calling secure webservice using CXF and Camel。但是我没有找到关于如何为我做了https4甚至在路线定义,这是一个信任简单地添加到组件的任何提示:
from(ENDPOINT_URI)
.setProperty(SecurityConstants.PASSWORD, constant(PASSWORD))
.setProperty(SecurityConstants.USERNAME, constant(USERNAME))
.to("cxf://" + SERVICE_URL + "?" +
"wsdlURL=" + WSDL_URL + "&" +
"serviceName=" + SERVICE_NAME + "&" +
"portName=" + PORT_NAME + "&" +
"dataFormat=CXF_MESSAGE&" +
"synchronous=true&" +
"defaultOperationName=" + DEFAULT_OPERATION_NAME)
.streamCaching();
我想这一定是一个很简单的问题,所以我仍然期望有一些简单的方法可以简单地添加信任库(或者甚至接受任何证书,因为它在我们的用例中并不相关)。如果有一个简单的编程方法,我会非常高兴。有人知道吗?