在 Axis2 上调用 JAX-WS API 时,我需要自定义 SSL 握手。
我根本找不到有关如何执行此操作的参考。使用 Metro 我可以设置自定义 SSLSocketFactory,但它使用非标准 API。
如何访问 Axis 引擎,以便在发送肥皂请求之前重新配置它?
在 Axis2 上调用 JAX-WS API 时,我需要自定义 SSL 握手。
我根本找不到有关如何执行此操作的参考。使用 Metro 我可以设置自定义 SSLSocketFactory,但它使用非标准 API。
如何访问 Axis 引擎,以便在发送肥皂请求之前重新配置它?
您可能有一个扩展的存根类org.apache.axis2.client.Stub
。您可以设置其传输属性:
YourStubClass stub = new YourStubClass();
stub.initStub(endpointUrl);
stub._getServiceClient().getOptions().setProperty(HTTPConstants.CACHED_HTTP_CLIENT, soapHttpClient);
WhereendpointUrl
是一个包含端点 URL 的字符串,并且soapHttpClient
是 Apache 的 HTTP 客户端 ( org.apache.commons.httpclient.HttpClient
) 的一个实例。
创建 HttpClient 对象时,您可以自定义 SSL 握手。
我放弃了 Axis2 和 WebSphere SOAP。实现我自己的支持我需要的一切的 JAX-WS 花费的时间更少。太糟糕了。
您可以使用静态方法 setDefaultSSLSocketFactory 为 HttpsURLConnection 设置默认 SSLSocketFactory。这将成为 HttpsURLConnection 的所有新实例的套接字工厂。我们让它在 SE 应用程序中工作,我认为它也适用于 Axis。