Add injection point name for log
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/70ac3f9c Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/70ac3f9c Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/70ac3f9c Branch: refs/heads/tomee-1.7.x Commit: 70ac3f9ceb46244a7a3d774e4ba76e903698601b Parents: 4662843 Author: AndyGee <andy...@gmx.de> Authored: Fri Nov 20 12:01:12 2015 +0100 Committer: AndyGee <andy...@gmx.de> Committed: Fri Nov 20 12:01:12 2015 +0100 ---------------------------------------------------------------------- .../org/apache/openejb/InjectionProcessor.java | 14 +++++--- .../activemq/ConnectionFactoryWrapper.java | 26 ++++++++------ .../resource/activemq/ConnectionWrapper.java | 16 ++++++--- .../resource/activemq/SessionWrapper.java | 37 +++++++++++++++++++- 4 files changed, 71 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/70ac3f9c/container/openejb-core/src/main/java/org/apache/openejb/InjectionProcessor.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/InjectionProcessor.java b/container/openejb-core/src/main/java/org/apache/openejb/InjectionProcessor.java index 6586214..a8e3b9d 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/InjectionProcessor.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/InjectionProcessor.java @@ -250,10 +250,7 @@ public class InjectionProcessor<T> { if (value != null) { - if("org.apache.activemq.ra.ActiveMQConnectionFactory".equals(value.getClass().getName())){ - //Wrap - value = new ConnectionFactoryWrapper(value); - } + final String prefix; if (usePrefix) { @@ -262,7 +259,14 @@ public class InjectionProcessor<T> { prefix = ""; } - objectRecipe.setProperty(prefix + injection.getName(), value); + final String name = prefix + injection.getName(); + + if("org.apache.activemq.ra.ActiveMQConnectionFactory".equals(value.getClass().getName())){ + //Wrap + value = new ConnectionFactoryWrapper(name, value); + } + + objectRecipe.setProperty(name, value); } else { logger.warning("Injection data not found in JNDI context: jndiName='" + injection.getJndiName() + "', target=" + injection.getTarget().getName() + "/" + injection.getName()); } http://git-wip-us.apache.org/repos/asf/tomee/blob/70ac3f9c/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ConnectionFactoryWrapper.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ConnectionFactoryWrapper.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ConnectionFactoryWrapper.java index d0034f1..0e94c1d 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ConnectionFactoryWrapper.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ConnectionFactoryWrapper.java @@ -27,23 +27,25 @@ public class ConnectionFactoryWrapper implements ConnectionFactory, TopicConnect private static final ArrayList<ConnectionWrapper> connections = new ArrayList<ConnectionWrapper>(); private final org.apache.activemq.ra.ActiveMQConnectionFactory factory; + private final String name; - public ConnectionFactoryWrapper(final Object factory) { + public ConnectionFactoryWrapper(final String name, final Object factory) { + this.name = name; this.factory = org.apache.activemq.ra.ActiveMQConnectionFactory.class.cast(factory); } @Override public Connection createConnection() throws JMSException { - return getConnection(this.factory.createConnection()); + return getConnection(this.name, this.factory.createConnection()); } @Override public Connection createConnection(final String userName, final String password) throws JMSException { - return getConnection(this.factory.createConnection(userName, password)); + return getConnection(this.name, this.factory.createConnection(userName, password)); } - private static Connection getConnection(final Connection connection) { - final ConnectionWrapper wrapper = new ConnectionWrapper(connection); + private static Connection getConnection(final String name, final Connection connection) { + final ConnectionWrapper wrapper = new ConnectionWrapper(name, connection); connections.add(wrapper); return wrapper; } @@ -55,36 +57,38 @@ public class ConnectionFactoryWrapper implements ConnectionFactory, TopicConnect public static void closeConnections() { final Iterator<ConnectionWrapper> iterator = connections.iterator(); + ConnectionWrapper next; while (iterator.hasNext()) { - final ConnectionWrapper next = iterator.next(); + next = iterator.next(); iterator.remove(); try { next.close(); } catch (final Exception e) { //no-op } finally { - Logger.getLogger(ConnectionFactoryWrapper.class.getName()).log(Level.SEVERE, "Closed a JMS connection. You have an application that fails to close this connection"); + Logger.getLogger(ConnectionFactoryWrapper.class.getName()).log(Level.SEVERE, "Closed a JMS connection. You have an application that fails to close a connection " + + "created by this injection path: " + next.getName()); } } } @Override public QueueConnection createQueueConnection() throws JMSException { - return QueueConnection.class.cast(getConnection(this.factory.createQueueConnection())); + return QueueConnection.class.cast(getConnection(this.name, this.factory.createQueueConnection())); } @Override public QueueConnection createQueueConnection(final String userName, final String password) throws JMSException { - return QueueConnection.class.cast(getConnection(this.factory.createQueueConnection(userName, password))); + return QueueConnection.class.cast(getConnection(this.name, this.factory.createQueueConnection(userName, password))); } @Override public TopicConnection createTopicConnection() throws JMSException { - return TopicConnection.class.cast(getConnection(this.factory.createTopicConnection())); + return TopicConnection.class.cast(getConnection(this.name, this.factory.createTopicConnection())); } @Override public TopicConnection createTopicConnection(final String userName, final String password) throws JMSException { - return TopicConnection.class.cast(getConnection(this.factory.createTopicConnection(userName, password))); + return TopicConnection.class.cast(getConnection(this.name, this.factory.createTopicConnection(userName, password))); } } http://git-wip-us.apache.org/repos/asf/tomee/blob/70ac3f9c/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ConnectionWrapper.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ConnectionWrapper.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ConnectionWrapper.java index c5a4783..707e9bd 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ConnectionWrapper.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ConnectionWrapper.java @@ -33,15 +33,17 @@ public class ConnectionWrapper implements Connection, TopicConnection, QueueConn private final ArrayList<SessionWrapper> sessions = new ArrayList<SessionWrapper>(); + private final String name; private final Connection con; - public ConnectionWrapper(final Connection con) { + public ConnectionWrapper(final String name, final Connection con) { + this.name = name; this.con = con; } @Override public Session createSession(final boolean transacted, final int acknowledgeMode) throws JMSException { - return getSession(con.createSession(transacted, acknowledgeMode)); + return this.getSession(con.createSession(transacted, acknowledgeMode)); } private Session getSession(final Session session) { @@ -61,7 +63,7 @@ public class ConnectionWrapper implements Connection, TopicConnection, QueueConn @Override public TopicSession createTopicSession(final boolean transacted, final int acknowledgeMode) throws JMSException { - return TopicConnection.class.cast(this.con).createTopicSession(transacted, acknowledgeMode); + return TopicSession.class.cast(this.getSession(TopicConnection.class.cast(this.con).createTopicSession(transacted, acknowledgeMode))); } @Override @@ -71,7 +73,7 @@ public class ConnectionWrapper implements Connection, TopicConnection, QueueConn @Override public QueueSession createQueueSession(final boolean transacted, final int acknowledgeMode) throws JMSException { - return QueueConnection.class.cast(this.con).createQueueSession(transacted, acknowledgeMode); + return QueueSession.class.cast(this.getSession(QueueConnection.class.cast(this.con).createQueueSession(transacted, acknowledgeMode))); } @Override @@ -117,7 +119,8 @@ public class ConnectionWrapper implements Connection, TopicConnection, QueueConn } catch (final Exception e) { //no-op } finally { - Logger.getLogger(ConnectionFactoryWrapper.class.getName()).log(Level.SEVERE, "Closed a JMS session. You have an application that fails to close this session"); + Logger.getLogger(ConnectionFactoryWrapper.class.getName()).log(Level.SEVERE, "Closed a JMS session. You have an application that fails to close a session " + + "created by this injection path: " + this.name); } } @@ -164,4 +167,7 @@ public class ConnectionWrapper implements Connection, TopicConnection, QueueConn } + public String getName() { + return this.name; + } } http://git-wip-us.apache.org/repos/asf/tomee/blob/70ac3f9c/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/SessionWrapper.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/SessionWrapper.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/SessionWrapper.java index 8d45658..5b19890 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/SessionWrapper.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/SessionWrapper.java @@ -21,16 +21,21 @@ import javax.jms.MessageProducer; import javax.jms.ObjectMessage; import javax.jms.Queue; import javax.jms.QueueBrowser; +import javax.jms.QueueReceiver; +import javax.jms.QueueSender; +import javax.jms.QueueSession; import javax.jms.Session; import javax.jms.StreamMessage; import javax.jms.TemporaryQueue; import javax.jms.TemporaryTopic; import javax.jms.TextMessage; import javax.jms.Topic; +import javax.jms.TopicPublisher; +import javax.jms.TopicSession; import javax.jms.TopicSubscriber; import java.io.Serializable; -public class SessionWrapper implements Session { +public class SessionWrapper implements Session, TopicSession, QueueSession { private final ConnectionWrapper connectionWrapper; private final Session session; @@ -140,6 +145,11 @@ public class SessionWrapper implements Session { } @Override + public TopicPublisher createPublisher(final Topic topic) throws JMSException { + return TopicSession.class.cast(this.session).createPublisher(topic); + } + + @Override public ObjectMessage createObjectMessage() throws JMSException { return session.createObjectMessage(); } @@ -150,6 +160,16 @@ public class SessionWrapper implements Session { } @Override + public TopicSubscriber createSubscriber(final Topic topic) throws JMSException { + return TopicSession.class.cast(this.session).createSubscriber(topic); + } + + @Override + public TopicSubscriber createSubscriber(final Topic topic, final String messageSelector, final boolean noLocal) throws JMSException { + return TopicSession.class.cast(this.session).createSubscriber(topic, messageSelector, noLocal); + } + + @Override public void setMessageListener(final MessageListener listener) throws JMSException { session.setMessageListener(listener); } @@ -170,6 +190,21 @@ public class SessionWrapper implements Session { } @Override + public QueueReceiver createReceiver(final Queue queue) throws JMSException { + return QueueSession.class.cast(this.session).createReceiver(queue); + } + + @Override + public QueueReceiver createReceiver(final Queue queue, final String messageSelector) throws JMSException { + return QueueSession.class.cast(this.session).createReceiver(queue, messageSelector); + } + + @Override + public QueueSender createSender(final Queue queue) throws JMSException { + return QueueSession.class.cast(this.session).createSender(queue); + } + + @Override public TopicSubscriber createDurableSubscriber(final Topic topic, final String name) throws JMSException { return session.createDurableSubscriber(topic, name); }