You can remote debug Synapse/Axis2 code by starting Synapse in the debug mode:
./synapse.sh -xdebug This will allow your IDE to connect to Synapse on port 8000. Thanks, Hiranya On Dec 18, 2014, at 10:16 AM, Tech Bolek <[email protected]> wrote: > I modified axis2 transport JMS to ensure it creates a queue session instead > of a topic session but this did not sovle my problem. Below is the same > error, it's essentially the same call stack with createQueueSession instead > of createTopicSession. My axis2.xml JMS transport configuration included > below. Also including the jms sender and receiver definition from my > axis2.xml. > > > > 2014-12-17 13:38:26,765 [-] [HttpClientWorker-2] ERROR JMSSender Unable to > create a JMSMessageSender for : > org.apache.axis2.transport.jms.JMSOutTransportInfo@315d2a36 > oracle.jms.AQjmsException: JMS-107: Operation not allowed on Connection > at oracle.jms.AQjmsError.throwEx(AQjmsError.java:334) at > oracle.jms.AQjmsConnection.createQueueSession(AQjmsConnection.java:643) > at > org.apache.axis2.transport.jms.JMSOutTransportInfo.createJMSSender(JMSOutTransportInfo.java:361) > 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) > at > org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:159) > at > org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:265) > at > org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:84) > at > org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60) > at > org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:114) > at > org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:229) > > > > > > > <transportReceiver name="jms" > class="org.apache.axis2.transport.jms.JMSListener"> > <parameter name="myQueueConnectionFactory" locked="false"> > <parameter name="java.naming.factory.initial" > locked="false">com.sun.jndi.ldap.LdapCtxFactory</parameter> > <parameter name="java.naming.provider.url" > locked="false">ldap://localhost:10389/</parameter> > <parameter name="server_dn" > locked="false">cn=ORCL,cn=OracleContext,ou=Services, o=sgi,c=us</parameter> > <parameter name="java.naming.security.principal" > locked="false">uid=tromanow,ou=Services,o=sgi,c=us</parameter> > <parameter name="java.naming.security.credentials" > locked="false">tromanow</parameter> > <parameter name="java.naming.security.authentication" > locked="false">simple</parameter> > <parameter name="transport.jms.UserName" > locked="false">tromanow</parameter> > <parameter name="transport.jms.Password" > locked="false">tromanow</parameter> > <parameter name="transport.jms.ConnectionFactoryJNDIName" > locked="false">cn=tro_jms,cn=oracledbconnections,cn=ORCL, > cn=OracleContext,ou=Services, o=sgi,c=us</parameter> > <parameter name="transport.jms.ConnectionFactoryType" > locked="false">queue</parameter> > </parameter> > <parameter name="default" locked="false"> > <parameter name="java.naming.factory.initial" > locked="false">com.sun.jndi.ldap.LdapCtxFactory</parameter> > <parameter name="java.naming.provider.url" > locked="false">ldap://localhost:10389/</parameter> > <parameter name="server_dn" > locked="false">cn=ORCL,cn=OracleContext,ou=Services, o=sgi,c=us</parameter> > <parameter name="java.naming.security.principal" > locked="false">uid=tromanow,ou=Services,o=sgi,c=us</parameter> > <parameter name="java.naming.security.credentials" > locked="false">tromanow</parameter> > <parameter name="java.naming.security.authentication" > locked="false">simple</parameter> > <parameter name="transport.jms.UserName" > locked="false">tromanow</parameter> > <parameter name="transport.jms.Password" > locked="false">tromanow</parameter> > <parameter name="transport.jms.ConnectionFactoryJNDIName" > locked="false">cn=tro_jms,cn=oracledbconnections,cn=ORCL, > cn=OracleContext,ou=Services, o=sgi,c=us</parameter> > <parameter name="transport.jms.ConnectionFactoryType" > locked="false">queue</parameter> > </parameter> > </transportReceiver> > > <transportSender name="jms" > class="org.apache.axis2.transport.jms.JMSSender"> > <parameter name="myQueueConnectionFactory" locked="false"> > <parameter name="java.naming.factory.initial" > locked="false">com.sun.jndi.ldap.LdapCtxFactory</parameter> > <parameter name="java.naming.provider.url" > locked="false">ldap://localhost:10389/</parameter> > <parameter name="server_dn" > locked="false">cn=ORCL,cn=OracleContext,ou=Services, o=sgi,c=us</parameter> > <parameter name="java.naming.security.principal" > locked="false">uid=tromanow,ou=Services,o=sgi,c=us</parameter> > <parameter name="java.naming.security.credentials" > locked="false">tromanow</parameter> > <parameter name="java.naming.security.authentication" > locked="false">simple</parameter> > <parameter name="transport.jms.UserName" > locked="false">tromanow</parameter> > <parameter name="transport.jms.Password" > locked="false">tromanow</parameter> > <parameter name="transport.jms.ConnectionFactoryJNDIName" > locked="false">cn=tro_jms,cn=oracledbconnections,cn=ORCL, > cn=OracleContext,ou=Services, o=sgi,c=us</parameter> > <parameter name="transport.jms.ConnectionFactoryType" > locked="false">queue</parameter> > </parameter> > <parameter name="default" locked="false"> > <parameter name="java.naming.factory.initial" > locked="false">com.sun.jndi.ldap.LdapCtxFactory</parameter> > <parameter name="java.naming.provider.url" > locked="false">ldap://localhost:10389/</parameter> > <parameter name="server_dn" > locked="false">cn=ORCL,cn=OracleContext,ou=Services, o=sgi,c=us</parameter> > <parameter name="java.naming.security.principal" > locked="false">uid=tromanow,ou=Services,o=sgi,c=us</parameter> > <parameter name="java.naming.security.credentials" > locked="false">tromanow</parameter> > <parameter name="java.naming.security.authentication" > locked="false">simple</parameter> > <parameter name="transport.jms.UserName" > locked="false">tromanow</parameter> > <parameter name="transport.jms.Password" > locked="false">tromanow</parameter> > <parameter name="transport.jms.ConnectionFactoryJNDIName" > locked="false">cn=tro_jms,cn=oracledbconnections,cn=ORCL, > cn=OracleContext,ou=Services, o=sgi,c=us</parameter> > <parameter name="transport.jms.ConnectionFactoryType" > locked="false">queue</parameter> > </parameter> > </transportSender> On Wednesday, December 17, 2014 11:24 AM, Tech Bolek > <[email protected]> wrote: > > > I think I found the problem. It looks like Oracle is not compatible with > Axis2 jms transport library. > > JMSOutTransportInfo(JMSConnectionFactory jmsConnectionFactory, > Destination dest, > String contentTypeProperty) { > this.jmsConnectionFactory = jmsConnectionFactory; > this.destination = dest; > destinationType = dest instanceof Topic ? > JMSConstants.DESTINATION_TYPE_TOPIC > : > JMSConstants.DESTINATION_TYPE_QUEUE; > this.contentTypeProperty = contentTypeProperty; > } > > > In order to determine, whether the destination is a topic or a queue axis2 > jms first checks to see if the destination implements the Topic interface. > The problem is, the Oracle class is the same for both Topic and Queue, > AQjmsDestination which implements both the Topic and the Queue interface. > > > > On Tuesday, December 16, 2014 11:54 PM, Hiranya Jayathilaka > <[email protected]> wrote: > > > It's been a while since I used the JMS transport. But perhaps you should try > defining the appropriate connection factories under the JMS configuration in > the axis2.xml file. > > Thanks, > Hiranya > > On Dec 15, 2014, at 12:54 PM, Tech Bolek <[email protected]> > wrote: > >> I'm sort of operating half-blind here but it seems like the configuration >> below, even though is still not working, makes more sense than the previous >> one. Again, the bold lines are what I added to the original configuration. >> This timeI'm getting an error: >> 2014-12-15 13:50:06,488 [-] [HttpClientWorker-1] ERROR JMSSender Unable to >> create a JMSMessageSender for : >> org.apache.axis2.transport.jms.JMSOutTransportInfo@283dd358 >> 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) >> at >> org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:159) >> at >> org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:265) >> at >> org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:84) >> at >> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60) >> at >> org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:114) >> at >> org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:229) >> at >> org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:370) >> at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive( >> >> >> <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_JMS2,cn=OracleDBQueues,cn=ORCL,cn=OracleContext,ou=Services, >> o=sgi,c=us</parameter> >> <parameter >> name="transport.jms.ReplyDestination">cn=tro_Q_JMS1,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> >> >> >> On Monday, December 15, 2014 11:26 AM, Tech Bolek >> <[email protected]> wrote: >> >> >> Thanks. I've set up an LDAP server and configured my queues (I'm using JMS >> queues though, not XML queues). Usign this link >> http://wso2.com/library/tutorials/2011/11/configuring-wso2-esb-with-oracle-as-messaging-media/. >> >> My synapse configuration does the following:1. Read a message from JMS >> queue2. Perform XSLT transformation and forward the request to the apache2 >> axis server to invoke the test stock quote service3. The stock quote >> response is captured in the log. >> Now I'd like to capture the response in another JMS queue. I've tried >> epanding the synapse config file as with the bold lines below but I'm >> getting an error: >> >> 2014-12-15 11:24:59,000 [-] [HttpClientWorker-1] ERROR NativeWorkerPool >> Uncaught exception >> java.lang.NullPointerException >> at >> org.apache.axis2.transport.jms.JMSSender.sendMessage(JMSSender.java:135) >> at >> org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:119) >> at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443) >> at >> org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:159) >> at >> org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:265) >> at >> org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:84) >> at >> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60) >> at >> org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:114) >> at >> org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:229) >> at >> org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:370) >> at >> org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:160) >> at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181) >> >> >> >> >> <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> >> <header name="To" >> value="jms:/cn=tro_Q_JMS1,cn=OracleDBQueues,cn=ORCL,cn=OracleContext,ou=Services,o=sgi,c=us"/> >> </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_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> >> </sequence> >> >> On Monday, November 3, 2014 5:37 PM, Isuru Udana <[email protected]> >> wrote: >> >> >> Hi All, >> We can use existing JMS transport for Oracle AQ integration. There are set >> of extra configurations needed to be done like setting us a LDAP server etc. >> Resource available at [1] describes Oracle AQ integration with WSO2 ESB. >> Since WSO2 ESB uses synapse as the mediation engine, we should be able do in >> the same way for synapse. >> And synapse do support to plug-in custom MessageStores. So we have that >> option too. >> [1] >> http://wso2.com/library/tutorials/2011/11/configuring-wso2-esb-with-oracle-as-messaging-media/ >> >> Thanks. >> On Tue, Nov 4, 2014 at 2:30 AM, Rajika Kumarasiri >> <[email protected]> wrote: >> >> Oracle AQ provides a JNDI API and you should be able to use the JMS >> transport without much trouble. >> >> Rajika >> >> On Mon, Nov 3, 2014 at 10:31 AM, Tech Bolek <[email protected]> >> wrote: >> >>> Greetings, >>> I'm looking for recomendations how to extend Synapse to support Oracle AQ >>> messages. For example, I'd like to be able to specify in the configuration >>> file that a message from a specific channel is to be sent to a pecific >>> queue. Or that a message that originates in a specific queue is to be >>> forwarded to web service. Oracle AQ has its own java API and I'm wondering >>> how to integrate it with Synapse. I'm considering wiritng a custom >>> transport and as well as looking at the Task interface or the Mediator >>> interface. >>> >> >> >> >> >> -- >> Isuru Udana >> Senior Software Engineer; WSO2 Inc.; http://wso2.com >> >> email: [email protected] >> blog: http://mytecheye.blogspot.com/ >> twitter: http://twitter.com/isudana >> >> >> >> >> >> >> > > -- > Hiranya Jayathilaka > Mayhem Lab/RACE Lab; > Dept. of Computer Science, UCSB; http://cs.ucsb.edu > E-mail: [email protected]; Mobile: +1 (805) 895-7443 > Blog: http://techfeast-hiranya.blogspot.com > > > > -- Hiranya Jayathilaka Mayhem Lab/RACE Lab; Dept. of Computer Science, UCSB; http://cs.ucsb.edu E-mail: [email protected]; Mobile: +1 (805) 895-7443 Blog: http://techfeast-hiranya.blogspot.com
