【问题标题】:AXIS2 and JAX-WS how can I change the SSL handshaking?AXIS2 和 JAX-WS 如何更改 SSL 握手?
【发布时间】:2009-08-20 13:38:00
【问题描述】:

在 Axis2 上调用 JAX-WS API 时,我需要自定义 SSL 握手。

我根本找不到有关如何执行此操作的参考。使用 Metro 我可以设置自定义 SSLSocketFactory,但它使用非标准 API。

如何访问 Axis 引擎,以便在发送肥皂请求之前重新配置它?

【问题讨论】:

    标签: java web-services client jax-ws axis2


    【解决方案1】:

    您可能有一个扩展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 握手。

    【讨论】:

    • 我会试试这个标志。经过大量搜索,我终于找到了一种获取 ServiceClient 的方法,并在选项上设置了一个协议处理程序……但不知何故,它没有被使用。也许 CACHED_HTTP_CLIENT 可能是一个解决方案?我遇到的问题是,这是 WebSphere 中可用的 Axis,它们似乎已连接到自己的传输类中。我正在与 IBM 谈判以获得解决方案,但他们似乎不了解自己的工具。它们只允许我将密钥库设置为文件,这对我的情况来说不够精细。
    • 希望它有效!我们必须为 Axis 定制传输以启用基本的 HTTP 身份验证,我相信它也可能适用于您的 SSL 自定义。顺便说一句,您提到了密钥库文件,我不知道这是否是您想要的,但可以通过编程方式添加一个新的 SSL 证书...
    • 不,它不起作用。太糟糕了。在普通的 Axis2 上它工作得很好,但在 WebSphere 的版本上却不行。将 SSL 证书添加到 SSLtrust 不是我想做的事情。当我们连接时,我们只希望密钥库中有一个证书。我们不想接受由另一个 CA 证书签名的证书,因为这些 CA 是不同的银行机构。可能发生的变化确实很小,但对于偏执的银行业人士来说还不够小。
    【解决方案2】:

    Axis2 是使用axis.xml 配置的。 Here 是 http 传输部分。

    您可能还想查看rampart 模块以及如何配置它。

    我希望这会有所帮助。关于这个主题的信息并不多。

    【讨论】:

    • 我会把这个axis.xml放在哪里?我怎样才能每次调用都有一个?我需要以编程方式设置参数。
    • axis2.xml 必须放在 web 应用程序的 WEB-INF 的 conf 文件夹中
    【解决方案3】:

    我放弃了 Axis2 和 WebSphere SOAP。实现我自己的支持我需要的一切的 JAX-WS 花费的时间更少。太糟糕了。

    【讨论】:

      【解决方案4】:

      您可以使用静态方法 setDefaultSSLSocketFactory 为 HttpsURLConnection 设置默认 SSLSocketFactory。这将成为 HttpsURLConnection 的所有新实例的套接字工厂。我们让它在 SE 应用程序中运行,我认为它也适用于 Axis。

      【讨论】:

        猜你喜欢
        • 2014-02-09
        • 2014-02-20
        • 2012-01-11
        • 1970-01-01
        • 2018-02-08
        • 2012-07-18
        • 2013-04-19
        • 2012-07-09
        • 2017-11-11
        相关资源
        最近更新 更多