У меня есть конфигурация Synapse для чтения сообщения из очереди Oracle JMS, вызова веб-службы и захвата ответа в журнале. Конфигурация основана на ws02 with oracleотправка ответа на очередь jms в синапсе
Я попытался расширить конфигурацию, чтобы захватить ответ в другом Queryue Oracle, но я получаю ошибку, как показано ниже. Похоже, что, несмотря на указание типа назначения ответа как «очереди», он все еще пытается создать сеанс темы вместо сеанса очереди.
2014-12-15 14:13:21,728 [-] [HttpClientWorker-1] ERROR JMSSender Unable to create a JMSMessageSender for : [email protected] oracle.jms.AQjmsException: JMS-107: Operation not allowed on Connection
at oracle.jms.AQjmsError.throwEx(AQjmsError.java:334)
at oracle.jms.AQjmsConnection.createTopicSession(AQjmsConnection.java:728)
at org.apache.axis2.transport.jms.JMSOutTransportInfo.createJMSSender(JMSOutTransportInfo.java:365)
at org.apache.axis2.transport.jms.JMSSender.sendMessage(JMSSender.java:121)
at org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:119)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
Конфигурация:
<definitions xmlns="http://ws.apache.org/ns/synapse">
<proxy name="StockQuoteProxy" transports="https http jms" startOnLoad="true" trace="disable">
<target>
<endpoint>
<address uri="http://localhost:9000/services/SimpleStockQuoteService" />
</endpoint>
<inSequence>
<log level="full" />
<enrich>
<source type="body" clone="true" />
<target type="property" property="jms_body_text" />
</enrich>
<property name="jms_body_text" expression="get-property('jms_body_text')" scope="default" />
<xslt key="jmsMsgToSoapMsg_xslt">
<property name="jms_text" expression="get-property('jms_body_text')" />
</xslt>
<log level="full">
<property name="After transformation" value="************" />
</log>
</inSequence>
<outSequence>
<log level="full">
<property name="OUT SEQUENCE" value="************" />
</log>
<send/>
</outSequence>
</target>
<publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
<parameter name="transport.jms.ContentType">
<rules>
<jmsProperty>ContentType</jmsProperty>
<default>text/plain</default>
</rules>
</parameter>
<parameter name="transport.jms.Destination">cn=tro_Q_JMS1,cn=OracleDBQueues,cn=ORCL,cn=OracleContext,ou=Services, o=sgi,c=us</parameter>
<parameter name="transport.jms.ReplyDestinationType">queue</parameter>
<parameter name="transport.jms.ReplyDestination">cn=tro_Q_JMS2,cn=OracleDBQueues,cn=ORCL,cn=OracleContext,ou=Services, o=sgi,c=us</parameter>
</proxy>
<localEntry key="jmsMsgToSoapMsg_xslt" src="file:jmsMsgToSoapMsg.xslt" />
<sequence name="fault">
<log level="full">
<property name="MESSAGE" value="Executing default "fault" sequence" />
<property name="ERROR_CODE" expression="get-property('ERROR_CODE')" />
<property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')" />
</log>
<drop/>
</sequence>
<sequence name="main">
<log/>
<drop/>
</sequence>
</definitions>