You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2013/06/03 08:20:22 UTC
[4/8] git commit: CAMEL-6197: Added disconnectLocalSession option to
disconnect local sessions to avoid OOME. Thanks to Seb C for contribution.
CAMEL-6197: Added disconnectLocalSession option to disconnect local sessions to avoid OOME. Thanks to Seb C for contribution.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/f3de135d
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/f3de135d
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/f3de135d
Branch: refs/heads/camel-2.10.x
Commit: f3de135d8aa7bf8db09dfd0010b84cd274c0ba1a
Parents: e10eecf
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Jun 2 17:50:50 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Jun 2 17:51:39 2013 +0200
----------------------------------------------------------------------
.../camel/component/cometd/CometdEndpoint.java | 9 ++++++
.../camel/component/cometd/CometdProducer.java | 23 ++++++++++----
2 files changed, 25 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/f3de135d/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java
index be9ec9d..4a5a342 100644
--- a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java
+++ b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java
@@ -44,6 +44,7 @@ public class CometdEndpoint extends DefaultEndpoint {
private boolean crossOriginFilterOn;
private String allowedOrigins;
private String filterPath;
+ private boolean disconnectLocalSession = true;
public CometdEndpoint(CometdComponent component, String uri, String remaining, Map<String, Object> parameters) {
super(uri, component);
@@ -193,4 +194,12 @@ public class CometdEndpoint extends DefaultEndpoint {
public void setFilterPath(String filterPath) {
this.filterPath = filterPath;
}
+
+ public boolean isDisconnectLocalSession() {
+ return disconnectLocalSession;
+ }
+
+ public void setDisconnectLocalSession(boolean disconnectLocalSession) {
+ this.disconnectLocalSession = disconnectLocalSession;
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/f3de135d/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java
index a077db0..a55bf81 100644
--- a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java
+++ b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java
@@ -50,7 +50,7 @@ public class CometdProducer extends DefaultProducer implements CometdProducerCon
endpoint.connect(this);
// should probably look into synchronization for this.
if (service == null) {
- service = new ProducerService(getBayeux(), new CometdBinding(bayeux), endpoint.getPath(), this);
+ service = new ProducerService(getBayeux(), new CometdBinding(bayeux), endpoint.getPath(), this, getEndpoint().isDisconnectLocalSession());
}
}
@@ -84,12 +84,14 @@ public class CometdProducer extends DefaultProducer implements CometdProducerCon
private final CometdProducer producer;
private final CometdBinding binding;
+ private final boolean disconnectLocalSession;
public ProducerService(BayeuxServer bayeux, CometdBinding cometdBinding, String channel,
- CometdProducer producer) {
+ CometdProducer producer, boolean disconnectLocalSession) {
super(bayeux, channel);
this.producer = producer;
this.binding = cometdBinding;
+ this.disconnectLocalSession = disconnectLocalSession;
}
public void process(final Exchange exchange) {
@@ -98,11 +100,18 @@ public class CometdProducer extends DefaultProducer implements CometdProducerCon
ServerChannel channel = bayeux.getChannel(channelName);
ServerSession serverSession = getServerSession();
- if (channel != null) {
- logDelivery(exchange, channel);
- ServerMessage.Mutable mutable = binding.createCometdMessage(channel, serverSession,
- exchange.getIn());
- channel.publish(serverSession, mutable);
+ try {
+ if (channel != null) {
+ logDelivery(exchange, channel);
+ ServerMessage.Mutable mutable = binding.createCometdMessage(channel, serverSession,
+ exchange.getIn());
+ channel.publish(serverSession, mutable);
+ }
+ } finally {
+ if (disconnectLocalSession && serverSession.isLocalSession()) {
+ LOG.trace("Disconnection local session {}", serverSession);
+ serverSession.disconnect();
+ }
}
}