You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSO2 EI 6.6.0调用HTTPS接口时遇NullPointerException报错求助

解决WSO2 EI 6.6.0中PassThroughHttpSSLSender的NullPointerException问题

问题场景

使用WSO2 EI 6.6.0的Call Mediator调用HTTPS后端接口时,触发以下SSL相关空指针异常:

{org.apache.synapse.transport.passthru.PassThroughHttpSSLSender} - System may be unstable: HTTPS ConnectingIOReactor encountered a runtime exception : null java.lang.NullPointerException
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:193)
    at org.apache.synapse.transport.http.conn.ClientSSLSetupHandler$1.verify(ClientSSLSetupHandler.java:82)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:159)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:147)
    at org.apache.synapse.transport.http.conn.ClientSSLSetupHandler.verify(ClientSSLSetupHandler.java:181)
    at org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:313)
    ...

调用逻辑配置:

<call>
  <endpoint name="GETToken">
    <address uri="api.backend"/>
  </endpoint>
</call>

已配置代理(Axis2.xml中注释了代理参数,同时在integrator.sh中添加了JVM级代理参数)。


解决方案

1. 补全Axis2.xml中不完整的SSL配置

你的axis2.xml里PassThroughHttpSSLSender的keystore参数未闭合,会导致SSL上下文初始化失败触发NPE,需补全完整配置:

<transportSender name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLSender">
    <parameter name="non-blocking" locked="false">true</parameter>
    <!-- 若启用Axis2代理则取消以下注释 -->
    <!-- <parameter name="http.proxyHost" locked="false">proxy.com</parameter>
    <parameter name="http.proxyPort" locked="false">8080</parameter> -->
    <parameter name="http.nonProxyHosts" locked="false">.*.domain.com|localhost|10.*.*.*</parameter>
    <parameter name="keystore" locked="false">
        <KeyStore>
            <Location>${carbon.home}/repository/resources/security/client-truststore.jks</Location>
            <Type>JKS</Type>
            <Password>wso2carbon</Password>
            <KeyPassword>wso2carbon</KeyPassword>
        </KeyStore>
    </parameter>
</transportSender>

2. 统一代理配置,避免冲突

同时在Axis2.xml和JVM参数中配置代理会导致逻辑冲突,二选一即可:

  • 选择Axis2.xml配置代理:取消axis2.xml中http/https transport sender的代理参数注释,删除integrator.sh中的JVM代理参数。
  • 选择JVM参数配置代理:保留integrator.sh的代理参数,删除Axis2.xml中所有代理相关配置,确保http.nonProxyHosts格式与环境匹配(Linux用|分隔,Windows用;)。

3. 确保后端证书被信任

NPE发生在证书验证环节,需将后端服务的SSL证书导入WSO2 EI的客户端信任库:

keytool -importcert -alias backend-api -file /path/to/backend-cert.crt -keystore ${carbon.home}/repository/resources/security/client-truststore.jks -storepass wso2carbon

4. 修正Endpoint URI格式

确保Endpoint使用完整的HTTPS协议前缀:

<address uri="https://api.backend"/>

5. 启用SSL调试日志排查

添加JVM参数启用SSL握手调试日志,定位具体问题:

-Djavax.net.debug=ssl:handshake:verbose

重启EI后查看日志,确认证书链、代理握手是否正常。


内容的提问来源于stack exchange,提问作者Aprendiendo Siempre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:20:27