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 &quot;fault&quot; 
>> 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 
>> &quot;fault&quot; 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

Reply via email to