Hi Asankha/Ruwan:

JMSUtil.java in the JMS transport module does set all JMS Connection
properties specified in axis2.xml.

For Sonic MQ, there is one vendor specific JMS connection property
"com.sonicsw.jndi.mfcontext.domain", which I have specified in my axis2.xml
file , but JMSUtils.java set only the following properties, 

 public static void setConnectionFactoryParameters(
        Parameter param, JMSConnectionFactory jmsConFactory) {

        ParameterIncludeImpl pi = new ParameterIncludeImpl();
        try {
            pi.deserializeParameters((OMElement) param.getValue());
        } catch (AxisFault axisFault) {
            log.error("Error reading parameters for JMS connection factory"
+
                jmsConFactory.getName(), axisFault);
        }

        Iterator params = pi.getParameters().iterator();
        while (params.hasNext()) {

            Parameter p = (Parameter) params.next();

            if (JMSConstants.CONFAC_TYPE.equals(p.getName())) {
                String connectionFactoryType = (String) p.getValue();
               
jmsConFactory.setConnectionFactoryType(connectionFactoryType);
            
            } else if (JMSConstants.RECONNECT_TIMEOUT.equals(p.getName())) {
              String strTimeout = (String) p.getValue();
              int reconnectTimeoutSeconds = Integer.parseInt(strTimeout);
              long reconnectTimeoutMillis = reconnectTimeoutSeconds * 1000;
              jmsConFactory.setReconnectTimeout(reconnectTimeoutMillis);
              
            } else if (Context.INITIAL_CONTEXT_FACTORY.equals(p.getName()))
{
                jmsConFactory.addJNDIContextProperty(
                    Context.INITIAL_CONTEXT_FACTORY, (String) p.getValue());
            } else if (Context.PROVIDER_URL.equals(p.getName())) {
                jmsConFactory.addJNDIContextProperty(
                    Context.PROVIDER_URL, (String) p.getValue());
            } else if (Context.SECURITY_PRINCIPAL.equals(p.getName())) {
                jmsConFactory.addJNDIContextProperty(
                    Context.SECURITY_PRINCIPAL, (String) p.getValue());
            } else if (Context.SECURITY_CREDENTIALS.equals(p.getName())) {
                jmsConFactory.addJNDIContextProperty(
                    Context.SECURITY_CREDENTIALS, (String) p.getValue());
            } else if
(JMSConstants.CONFAC_JNDI_NAME_PARAM.equals(p.getName())) {
                jmsConFactory.setConnFactoryJNDIName((String) p.getValue());
                jmsConFactory.addJNDIContextProperty(
                    JMSConstants.CONFAC_JNDI_NAME_PARAM, (String)
p.getValue());
            }
        }
    }

As a result it cannot connect to the right Domain of Sonic MQ. My axis2.xml
looks like 

 <transportReceiver name="jms"
class="org.apache.synapse.transport.jms.JMSListener">
      
        <parameter name="myTopicConnectionFactory">
                <parameter
name="java.naming.factory.initial">com.sonicsw.jndi.mfcontext.MFContextFactory</parameter>
                <parameter
name="java.naming.provider.url">tcp://sonicdev3:3506</parameter>
                <parameter
name="com.sonicsw.jndi.mfcontext.domain">dev3Domain</parameter>
                <parameter
name="java.naming.security.principal">Administrator</parameter>
                <parameter
name="java.naming.security.credentials">Administrator</parameter>
                <parameter
name="transport.jms.ConnectionFactoryJNDIName">SonicTopicConnectionFactory</parameter>
                <parameter name="transport.jms.ConnectionFactoryType"
locked="false">topic</parameter>
        </parameter>

        <parameter name="myQueueConnectionFactory">
                <parameter
name="java.naming.factory.initial">com.sonicsw.jndi.mfcontext.MFContextFactory</parameter>
                <parameter
name="java.naming.provider.url">tcp://sonicdev3:3506</parameter>
                <parameter
name="com.sonicsw.jndi.mfcontext.domain">dev3Domain</parameter>
                <parameter
name="java.naming.security.principal">Administrator</parameter>
                <parameter
name="java.naming.security.credentials">Administrator</parameter>               
                <parameter
name="transport.jms.ConnectionFactoryJNDIName">SonicQueueConnectionFactory</parameter>
                <parameter name="transport.jms.ConnectionFactoryType"
locked="false">queue</parameter>
        </parameter>

    </transportReceiver>    

I have tested this by building Synapse from source with some debug statement
in JNDIConnectionFactory
as 

 log.info("com.sonicsw.jndi.mfcontext.domain=" + (String)
jndiProperties.get("com.sonicsw.jndi.mfcontext.domain"));


My log shows 2008-07-11 17:10:15,652 [10.200.182.100-PS-TSAHA]
[WrapperSimpleAppMain]  INFO JMSConnectionFactory
com.sonicsw.jndi.mfcontext.domain=null

Pl fix this issue

-thanks
tanmay




-- 
View this message in context: 
http://www.nabble.com/JMSUtil-does-not-set-all-JMS-Connection-properties-specified-in-axis2.xml-tp18414679p18414679.html
Sent from the Synapse - User mailing list archive at Nabble.com.

Reply via email to