JMS transport mixes JNDI names and destination names
----------------------------------------------------

                 Key: SYNAPSE-439
                 URL: https://issues.apache.org/jira/browse/SYNAPSE-439
             Project: Synapse
          Issue Type: Bug
          Components: Transports
    Affects Versions: 1.2
            Reporter: Andreas Veithen
            Assignee: Andreas Veithen


JMSSender contains the following two instructions:

session = 
jmsConnectionFactory.getSessionForDestination(JMSUtils.getDestination(targetAddress));

session = 
jmsConnectionFactory.getSessionForDestination(jmsOut.getDestination().toString());

While in the first case the lookup of the session is done using the JNDI name 
of the destination, in the second case the physical destination name is used. 
The documentation and code in JMSConnectionFactory#getSessionForDestination 
indicates that this method expects a JNDI name as argument.

The whole principle of caching a session for each destination should be 
reviewed. Indeed:
* A JMS session doesn't depend on the destination.
* A client can specify destinations in the JMS Reply-To header. This means that 
the code adds a new session to the cache each time a client uses a reply-to 
destination the transport has not seen before. These sessions will only be 
freed when the transport is shut down. This is particularly bad if the client 
uses temporary queues.

It would be better to have a pool of JMS sessions for each connection (factory).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to