与API Manager一起使用Mule代理肥皂服务



我正在尝试在mule中代理HTTPS SOAP服务,因此在任何点中使用API Manager并给出了那里的WSDL URL,但是在部署应用程序时,我会遇到错误,如下所示

Could not resolve placeholder 
'wsdl(p['wsdl.uri']).services[0].preferredPort.addresses[0].host' 
    in string value "<http:request-config name="http-request-config" 
    host="![wsdl(p['wsdl.uri']).services[0].preferredPort.addresses[0].host]" 
    port="![wsdl(p['wsdl.uri']).services[0].preferredPort.addresses[0].port]" protocol="HTTPS">
    </http:request-config>

我已经下载了该项目, wsdl.uri 属性中存在属性。

更新:

只是为了了解WSDL函数返回的内容,我尝试在示例项目中提供以下数据启示。

#[dw(wsdl('https://myhost/check/checkrecieveAPI?WSDL'))]

但收到以下错误,因为未配置TLS。不确定如何在 WSDL 函数中配置TLS。

sun.security.provider.certpath.suncertpathbuilderexception:无法找到请求目标的有效认证路径

有两个不同的问题。

1.您无法从属性文件中读取属性。

答案:您需要使用Spring上下文标签将属性文件加载到上下文中。

eg:

<context:property-placeholder location="propetyFileName.properties" />
<flow name="myProject_flow">
<logger message="${propertyFromPropertyFile}" doc:name="System Property 
 Set in Property File"/>
</flow>

请参考链接以获取更多详细信息。

2.SSL握手异常。

答案:

您正在获得此例外,因为您正在尝试访问受保护的资源,对于此资源,您没有向您添加有效的证书。

为此,检查在m子/Anypoint Studio中配置的JDK

您需要将所需的证书导入JDK。

您可以做几种方法。BELOW是我使用的方法之一

当您的Java程序试图连接到具有无效或自签名证书的服务器(例如开发环境中的应用程序服务器)时,您可能会得到以下例外:

javax.net.ssl.sslhandshakeexception:sun.security.validator.validatorexception:pkix路径构建失败:sun.security.provider.certpath.certpath.suncertpathbuilderexception:无法找到有效的认证路径

要使您的Java运行时环境信任证书,您需要将其导入JRE证书存储。

步骤1-将证书获取到您的浏览器商店

使用SSL浏览到您的应用程序服务器。您的浏览器会告诉您证书不信任并允许您信任它,从而将其放置在浏览器证书存储中。

步骤2-将证书导出到二进制文件

您的浏览器将具有某种证书管理器,使您可以将特定证书导出到二进制文件。在Firefox中,将在偏好/高级/加密/服务器下。查找服务器提供的证书并将其导出为二进制文件。

步骤3-将证书导入Java Store

确保您对JRE的写入访问权限并使用键盘实用程序将其导入:

KEYTOOL -IMPORT -ALIAS别名-Keystore通道通道/lib/lib/security/cacerts -file通路通道for to-certificate-file

示例:

KEYTOOL -IMPORT -ALIAS NEWCERT -KEYSTORE/opt/jdk1.6/jre/lib/lib/security/cacerts-file/home/newcert.der

您将提示您获取密钥库密码,默认情况下是更改。

您可以使用基于实用程序的工具轻松执行此操作。检查链接下方。https://github.com/escline/installcert

在WSDL函数中配置TLS。TLS配置元素独立于任何模块或传输。在Mule 3.7中,它得到了HTTP连接器和Web服务消费者的支持。

您可以通过HTTP Connector的全局配置元素,TLS/SSL选项卡或Web服务消费者的UI创建此元素。

TLS:上下文元素定义了TLS的配置,可以从客户端和服务器侧使用。它可以由其他模块的其他配置对象(或定义为其中一个嵌套元素)引用。

在其中,您可以包括两个嵌套元素:密钥商店和信任商店。您不需要两者都包括两者,但是至少必须存在一个:

从服务器端:Trust Store包含受信任客户端的证书,密钥存储包含服务器的私钥和公共密钥。

来自客户端:信任商店包含受信任服务器的证书,密钥存储包含客户端的私钥和公共密钥。

将信任存储或密钥存储添加到TLS配置中,隐式实现了相应的身份验证。将密钥库和信任存储添加到一个相同的配置(如上所述)中隐式实现TLS身份验证,也称为相互认证。