所以我正在尝试基于wsdl构建代理。此代理将侦听hhtp / https并将传入的SOAP消息转换为JSON,通过JMS将其发送到端点。当然,还需要考虑从JSON到SOAP的方式。
有人可以帮我解决这个问题。我在ESB 4.5.1上尝试了样本440,只是用“out_transform”切换“in_transform”,还有一些在stackoverflow中找到的其他配方,但它们似乎都没有完成这项工作。在所有情况下,我都在端点获得一个空的JMS消息。
这是我的代理的副本
<proxy xmlns="http://ws.apache.org/ns/synapse" name="Tarjetas" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
<target>
<inSequence>
<log level="full"/>
<property name="messageType" value="application/json" scope="axis2"/>
</inSequence>
<outSequence>
<log level="full"/>
<xslt key="out_transform"/>
<property name="messageType" value="text/xml" scope="axis2"/>
<send/>
</outSequence>
<endpoint>
<address uri="jms:/FORTALEZA.BRIDGE.MOBILE.QUEUE?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616&transport.jms.DestinationType=queue"/>
</endpoint>
</target>
<publishWSDL uri="file:repository/wsdl/Debito.wsdl"/>
<description></description>
</proxy>
这是我的local_ntry for out_transform
<localEntry key="out_transform">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
xmlns:m0="http://services.samples"
version="2.0"
exclude-result-prefixes="m0 fn">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="*">
<xsl:element name="{local-name()}" namespace="http://services.samples">
<xsl:copy-of select="attribute::*"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
</localEntry>
我在axis2.xml中使用以下内容
<messageFormatter contentType="application/json"
class="org.apache.axis2.json.JSONStreamFormatter"/>
<messageBuilder contentType="application/json"
class="org.apache.axis2.json.JSONStreamBuilder"/>
我非常感谢能得到的所有帮助。
答案 0 :(得分:0)
您需要在axis2.xml中使用以下消息格式化程序和消息构建器
<messageFormatter contentType="application/json"
class="org.apache.axis2.json.JSONMessageFormatter"/>
<messageBuilder contentType="application/json"
class="org.apache.axis2.json.JSONBuilder"/>
使用脚本介体构建JSON消息时,可以使用StreamFormatter。否则,上述格式化程序/构建器将适用于您的要求。您需要注释掉已取消注释的StreamFormatters。