我正在尝试调用 https 出站外部网络服务。它在我本地的 MuleStudion 环境中运行良好。但是当我部署测试时。我得到一个异常(exception)
Message : Failed to route event via endpoint: DefaultOutboundEndpoint{endpointUri=https://xxx.com/yyy, connector=HttpsConnector
{
name=connector.https.mule.default
lifecycle=start
this=4670c992
numberOfConcurrentTransactedReceivers=4
createMultipleTransactedReceivers=true
connected=true
supportedProtocols=[https]
serviceOverrides=<none>
}
, name='endpoint.https.xxx.comy.yyy', mep=REQUEST_RESPONSE, properties={http.method=POST, Content-Type=text/xml}, transactionConfig=Transaction{factory=null, action=INDIFFERENT, timeout=0}, deleteUnacceptedMessages=false, initialState=started, responseTimeout=10000, endpointEncoding=UTF-8, disableTransportTransformer=false}. Message payload is of type: PostMethod
Code : MULE_ERROR-42999
--------------------------------------------------------------------------------
异常堆栈是:
- trustAnchors 参数必须非空(java.security.InvalidAlgorithmParameterException) java.security.cert.PKIXParameters:200 (null)
- 意外错误:java.security.InvalidAlgorithmParameterException:trustAnchors 参数必须为非空 (java.lang.RuntimeException) sun.security.validator.PKIXValidator:90 (null)
- java.lang.RuntimeException:意外错误:java.security.InvalidAlgorithmParameterException:trustAnchors 参数必须为非空 (javax.net.ssl.SSLException) sun.security.ssl.Alerts:208 ( http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/net/ssl/SSLException.html )
- 无法通过端点路由事件:DefaultOutboundEndpoint{endpointUri= https://xxx.com/yyy , 连接器=HttpsConnector
片段调用是
<set-payload value="<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mcs="http://www.cybershift.com/wfm3/mcs10/" xmlns:ns="http://www.cybershift.com/wfm3/5/3/"><soapenv:Header><mcs:UsernameToken><mcs:clientName>HHMI</mcs:clientName><mcs:user>xxx</mcs:user><mcs:password>yyy5</mcs:password></mcs:UsernameToken></soapenv:Header><soapenv:Body><mcs:RetrieveData><mcs:businessObjectName>SCHEDULE</mcs:businessObjectName><mcs:queryValueObject action="ADD" startDate="#[flowVars['payStartDate']]" endDate="#[flowVars['payEndDate']]"><ns:StringAttribute name="pqr"><ns:string>#[empIDS.get(flowVars['eid']-1).text]</ns:string></ns:StringAttribute></mcs:queryValueObject></mcs:RetrieveData></soapenv:Body></soapenv:Envelope>" doc:name="Set Payload"/>
<logger message="SOAP Request to ST #[message.payload]" level="INFO" doc:name="Logger"/>
<https:outbound-endpoint exchange-pattern="request-response" method="POST" doc:name="ST" contentType="text/xml" address="https://xxx.com/yyy"/>
我需要设置 https 连接器吗?如果是这样,我需要拥有什么。非常感谢。
最佳答案
一般这意味着找不到您指定的信任库,或者由于 os 中的访问权限而无法打开。检查该服务是否可以访问 keystore 。
关于ssl - 连接到外部 https 网络服务时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26492357/