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