Author: echatellier Date: 2010-06-11 16:50:28 +0200 (Fri, 11 Jun 2010) New Revision: 123 Url: http://nuiton.org/repositories/revision/wikitty/123 Log: Add option to setup custom application jgroups communication channel. Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/JGroupsNotifier.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/JGroupsNotifier.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/JGroupsNotifier.java 2010-06-11 13:50:57 UTC (rev 122) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/JGroupsNotifier.java 2010-06-11 14:50:28 UTC (rev 123) @@ -86,16 +86,18 @@ /** JGroup channel. */ protected JChannel channel; - public JGroupsNotifier(WikittyServiceNotifier ws, boolean propagateCache) { + public JGroupsNotifier(WikittyServiceNotifier ws, String channelName, boolean propagateCache) { this.ws = ws; this.propagateCache = propagateCache; - initChannel(); + initChannel(channelName); } /** * Init jgroup channel. + * + * @param channelName channel name */ - protected void initChannel() { + protected void initChannel(String channelName) { if (log.isDebugEnabled()) { log.debug("Init jgroup communication channel..."); } @@ -103,10 +105,10 @@ try { // use default udp.xml in classpath channel = new JChannel(); - channel.connect("wikitty"); + channel.connect(channelName); channel.setReceiver(this); - - // don't receive messages sent by myself + + // don't receive messages sent by myself channel.setOpt(Channel.LOCAL, false); if (log.isDebugEnabled()) { Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java 2010-06-11 13:50:57 UTC (rev 122) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java 2010-06-11 14:50:28 UTC (rev 123) @@ -27,9 +27,11 @@ import java.util.Properties; import java.util.Set; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.ListenerSet; +import org.nuiton.util.StringUtil; /** * Wikitty service notifier. @@ -48,12 +50,14 @@ static private Log log = LogFactory.getLog(WikittyServiceNotifier.class); /** - * Ajout du listener jgroup par default. Default to false, not used. + * Utilisation du canal de communication basé sur jgroups avec + * comme identifiant d'application le nom de canal en option. * - * If {@link #WIKITTY_EVENT_PROPAGATE_OPTION} is {@code true}, this - * configuration is skipped and considered as {@code true}. + * Si ce nom est vide, jgroups n'est pas utilisé. + * Si {@link #WIKITTY_EVENT_PROPAGATE_OPTION} est a true et que cette + * options est vide, une exception est levée. */ - static public final String WIKITTY_EVENT_JGROUP_OPTION = "wikitty.service.event.useJGroups"; + static public final String WIKITTY_EVENT_JGROUPCHANNELNAME_OPTION = "wikitty.service.event.jgroupschannelname"; /** * Indique si les objects sont propages (true) vers les autres caches ou @@ -130,11 +134,14 @@ } // add notifier as listener - String useJGroup = props.getProperty(WIKITTY_EVENT_JGROUP_OPTION, "false"); - if (propagateCache || "true".equalsIgnoreCase(useJGroup)) { - notifier = new JGroupsNotifier(this, propagateCache); + String jgroupChannel = props.getProperty(WIKITTY_EVENT_JGROUPCHANNELNAME_OPTION); + if (!StringUtils.isBlank(jgroupChannel)) { + notifier = new JGroupsNotifier(this, jgroupChannel, propagateCache); addWikittyServiceListener(notifier, ServiceListenerType.ALL); // weak reference } + else if (propagateCache) { + throw new IllegalArgumentException("Can't use propagate cache without a valid jgroups channel name !!!"); + } else if (log.isDebugEnabled()) { log.debug("JGroup synchronisation channel not used "); }
participants (1)
-
echatellier@users.nuiton.org