[ 
https://issues.apache.org/jira/browse/CXF-6454?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15925926#comment-15925926
 ] 

Christian Schneider edited comment on CXF-6454 at 3/15/17 11:29 AM:
--------------------------------------------------------------------

What is the status of this? I have seen two pull requests but both are closed 
now. 
The pull requests also seemed to be quite extensive .. much more than a simple 
bug fix. 

Can we maybe discuss a design and then open a new issue that documents the 
problem and the agreed on design. This issue has grown quite large and it is 
difficult to work through the  comments and get a clear pricture. If there is 
interest I am also available on google hangouts for a personal chat to discuss 
possible solutions.
My hangouts id is cschneider111::at::gmail.com (replace ::at:: with @ of 
course). .. oh and you can also reach me in the #apache-cxf channel on irc.



was (Author: ch...@die-schneider.net):
What is the status of this? I have seen two pull requests but both are closed 
now. 
The pull requests also seemed to be quite extensive .. much more than a simple 
bug fix. 

Can we maybe discuss a design and then open a new issue that documents the 
problem and the agreed on design. This issue has grown quite large and it is 
difficult to work through the  comments and get a clear pricture. If there is 
interest I am also available on google hangouts for a personal chat to discuss 
possible solutions.
My hangouts id is cschneider111::at::gmail.com (replace ::at:: with @ of 
course).


> Orphaned JMS connections created in endless loop
> ------------------------------------------------
>
>                 Key: CXF-6454
>                 URL: https://issues.apache.org/jira/browse/CXF-6454
>             Project: CXF
>          Issue Type: Bug
>          Components: JMS, Transports
>    Affects Versions: 3.0.5
>            Reporter: Waldemar Szostak
>            Assignee: Christian Schneider
>            Priority: Critical
>             Fix For: 3.0.7, 3.2.0
>
>
> h3. Problem description
> In JMSFactory.createConnection(JMSConfiguration):
> {code}public static Connection createConnection(JMSConfiguration jmsConfig) 
> throws JMSException {
>       String username = jmsConfig.getUserName();
>       ConnectionFactory cf = jmsConfig.getConnectionFactory();
>       Connection connection = username != null 
>               ? cf.createConnection(username, jmsConfig.getPassword())
>               : cf.createConnection();
>       if (jmsConfig.getDurableSubscriptionClientId() != null) {
>               
> connection.setClientID(jmsConfig.getDurableSubscriptionClientId());
>       }
>       return connection;
> }{code}
> there is no exception handling if the clientID fails to be set. Such an 
> exception would exit this method without passing the reference to the 
> just-opened JMS connection to exception handling code 
> (JMSDestination.createTargetDestinationListener()).
> Moreover, JMSDestination.restartConnection() keeps on starting new 
> connections (there is no max attempt restriction!) until it creates one 
> without an exception thrown in the process.
> Now, if the clientID is already connected to the ESB, this creation of new 
> connection will last until server resources are no longer available to the 
> JVM.
> h3. Possible solution
> # Close the connection if it's not possible to set the specified clientID at 
> the time:
> {code}public static Connection createConnection(JMSConfiguration jmsConfig) 
> throws JMSException {
>       String username = jmsConfig.getUserName();
>       ConnectionFactory cf = jmsConfig.getConnectionFactory();
>       Connection connection = username != null 
>                       ? cf.createConnection(username, 
> jmsConfig.getPassword()) 
>                       : cf.createConnection();
>       if (jmsConfig.getDurableSubscriptionClientId() != null) {
>               try {                                   
> connection.setClientID(jmsConfig.getDurableSubscriptionClientId());
>               } catch (InvalidClientIDException e) {
>                       connection.close();
>                       throw e;
>               }
>       }
>       return connection;
> }{code}
> # Add a setting to restrict the maximum attempts to restart the connection in 
> JMSDestination.restartConnection() A configurable value would be best, but 
> even a hardcoded.. anything but the practically endless loop ;-)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to