【问题标题】:axis2 over https starter questionaxis2 over https 入门问题
【发布时间】:2011-01-16 21:20:40
【问题描述】:

我正在尝试弄清楚如何通过 https 使用axis2。
axis2 指南说:

CommonsHTTPTransportSender 也可以 用于通过 https 进行通信。

还有:

请注意默认情况下 HTTPS 仅在服务器不工作时工作 期望对客户端进行身份验证 (仅限 1 路 SSL)和服务器所在的位置 有客户的公钥在其 信任商店。如果你想表演 SSL 客户端认证(2-way SSL), 你可以使用 Protocol.registerProtocol 的特性 HttpClient。

所以我的问题是轴的 HTTPS 有 2 种方法吗?
1) 使用 CommonsHTTPTransportSender
2) 取消注释 apache 配置上的 https 连接器??
还是只有 (1) 是标准方法??
客户端身份验证还有什么问题?我知道对于 apache 连接器,我只需要设置 clientAuth。这不适用于轴?

欢迎任何意见!
谢谢

【问题讨论】:

    标签: java web-services tomcat https axis2


    【解决方案1】:

    参考:http://axis.apache.org/axis2/java/core/docs/servlet-transport.html

    对于每个协议(HTTP 和/或 HTTPS),必须在 axis2.xml 中声明一个 AxisServletListener 实例。如果只使用一个协议,则不需要进一步配置。例如,如果只使用 HTTP,axis2.xml 中必须存在以下声明:

    <transportReceiver name="http" class="org.apache.axis2.transport.http.AxisServletListener"/>
    

    如果同时使用 HTTP 和 HTTPS,那么事情会变得有点复杂。原因是为了使用正确的端点 URI 公开 WSDL,AxisServlet 必须知道 HTTP 和 HTTPS 使用的端口。不幸的是,servlet API 不允许 Web 应用程序发现所有配置的协议。它仅提供有关当前请求的协议、主机名和端口的信息。如果只配置了一个 AxisServletListener,那么这个信息就足以让 AxisServlet 自动检测端口号。如果同时使用 HTTP 和 HTTPS(或者如果通过 AxisServlet 以外的传输方式检索 WSDL),则 AxisServlet 在为每个协议处理至少一个请求之前无法知道端口号。为了使 WSDL 生成在这种情况下可预测,需要在 axis2.xml 中显式配置端口号,例如以下示例:

    <transportReceiver name="http" class="org.apache.axis2.transport.http.AxisServletListener">
        <parameter name="port">8080</parameter>
    </transportReceiver>
    
    <transportReceiver name="https" class="org.apache.axis2.transport.http.AxisServletListener">
        <parameter name="port">8443</parameter>
    </transportReceiver>
    

    【讨论】:

      【解决方案2】:

      这是我在我的 axis.xml 配置中使用的 https 连接器方法(Axis 1.4.1)。

      <transportReceiver name="https" class="org.apache.axis2.transport.nhttp.HttpCoreNIOSSLListener">
          <parameter name="port" locked="false">9002</parameter>
          <parameter name="non-blocking" locked="false">true</parameter>
        <parameter name="keystore" locked="false">
            <KeyStore>
                <Location>.keystore</Location>
                <Type>JKS</Type>
                <Password>changeme</Password>
                <KeyPassword>changeme2</KeyPassword>
            </KeyStore>
        </parameter>
      </transportReceiver>
      

      我将密钥库转储到了 axis2-1.4.1/lib 下,以避免添加专用的类路径。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-06
        • 2013-04-17
        • 2020-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多