Repository: activemq-artemis
Updated Branches:
  refs/heads/master 16eca68bf -> fcce3bac2


Revert "Changing the way to interact with JGroups in the ResourceAdapter"

This reverts commit 2493158d1168bd6a93cafbecab68ba6c19901061.

This is causing some problems with the classloader used in the RA,
resulting in NPEs.  Reverting this.  We can revist when we have a more
stable solution.


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/fcce3bac
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/fcce3bac
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/fcce3bac

Branch: refs/heads/master
Commit: fcce3bac2a78fe57775d56e38425354f5ca7f0c9
Parents: 16eca68
Author: Martyn Taylor <[email protected]>
Authored: Thu Aug 24 10:24:40 2017 +0100
Committer: Martyn Taylor <[email protected]>
Committed: Thu Aug 24 10:26:37 2017 +0100

----------------------------------------------------------------------
 .../apache/activemq/artemis/ra/ActiveMQRaUtils.java | 16 ++++++++--------
 .../artemis/ra/ActiveMQResourceAdapter.java         |  8 ++++++--
 2 files changed, 14 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/fcce3bac/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRaUtils.java
----------------------------------------------------------------------
diff --git 
a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRaUtils.java 
b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRaUtils.java
index 47c95bf..bc2b42f 100644
--- 
a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRaUtils.java
+++ 
b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRaUtils.java
@@ -27,7 +27,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
-import org.apache.activemq.artemis.api.core.BroadcastEndpointFactory;
+import org.jgroups.JChannel;
 
 /**
  * Various utility functions
@@ -236,19 +236,19 @@ public final class ActiveMQRaUtils {
 
    /**
     * Within AS7 the RA is loaded by JCA. properties can only be passed in 
String form. However if
-    * RA is configured using jgroups stack, we need to pass a 
BroadcastEndpointFactory object. As is impossible with
-    * JCA, we use this method to allow a BroadcastEndpointFactory object to be 
located.
+    * RA is configured using jgroups stack, we need to pass a Channel object. 
As is impossible with
+    * JCA, we use this method to allow a JChannel object to be located.
     */
-   public static BroadcastEndpointFactory locateBroadcastEndpointFactory(final 
String locatorClass, final String name) {
-      return AccessController.doPrivileged(new 
PrivilegedAction<BroadcastEndpointFactory>() {
+   public static JChannel locateJGroupsChannel(final String locatorClass, 
final String name) {
+      return AccessController.doPrivileged(new PrivilegedAction<JChannel>() {
          @Override
-         public BroadcastEndpointFactory run() {
+         public JChannel run() {
             try {
                ClassLoader loader = 
Thread.currentThread().getContextClassLoader();
                Class<?> aClass = loader.loadClass(locatorClass);
                Object o = aClass.newInstance();
-               Method m = aClass.getMethod("locateBroadcastEndpointFactory", 
new Class[]{String.class});
-               return (BroadcastEndpointFactory) m.invoke(o, name);
+               Method m = aClass.getMethod("locateChannel", new 
Class[]{String.class});
+               return (JChannel) m.invoke(o, name);
             } catch (Throwable e) {
                ActiveMQRALogger.LOGGER.debug(e.getMessage(), e);
                return null;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/fcce3bac/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQResourceAdapter.java
----------------------------------------------------------------------
diff --git 
a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQResourceAdapter.java
 
b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQResourceAdapter.java
index 9812980..bd4b8c9 100644
--- 
a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQResourceAdapter.java
+++ 
b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQResourceAdapter.java
@@ -42,6 +42,7 @@ import java.util.regex.Pattern;
 
 import org.apache.activemq.artemis.api.core.ActiveMQException;
 import org.apache.activemq.artemis.api.core.BroadcastEndpointFactory;
+import org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory;
 import org.apache.activemq.artemis.api.core.DiscoveryGroupConfiguration;
 import 
org.apache.activemq.artemis.api.core.JGroupsFileBroadcastEndpointFactory;
 import org.apache.activemq.artemis.api.core.Pair;
@@ -60,6 +61,7 @@ import 
org.apache.activemq.artemis.service.extensions.ServiceUtils;
 import 
org.apache.activemq.artemis.service.extensions.xa.recovery.XARecoveryConfig;
 import org.apache.activemq.artemis.utils.SensitiveDataCodec;
 import org.jboss.logging.Logger;
+import org.jgroups.JChannel;
 
 /**
  * The resource adapter for ActiveMQ
@@ -1714,7 +1716,8 @@ public class ActiveMQResourceAdapter implements 
ResourceAdapter, Serializable {
 
          if (jgroupsLocatorClassName != null) {
             String jchannelRefName = raProperties.getJgroupsChannelRefName();
-            endpointFactory = 
ActiveMQRaUtils.locateBroadcastEndpointFactory(jgroupsLocatorClassName, 
jchannelRefName);
+            JChannel jchannel = 
ActiveMQRaUtils.locateJGroupsChannel(jgroupsLocatorClassName, jchannelRefName);
+            endpointFactory = new ChannelBroadcastEndpointFactory(jchannel, 
jgroupsChannel);
          } else if (discoveryAddress != null) {
             Integer discoveryPort = overrideProperties.getDiscoveryPort() != 
null ? overrideProperties.getDiscoveryPort() : getDiscoveryPort();
             if (discoveryPort == null) {
@@ -1814,7 +1817,8 @@ public class ActiveMQResourceAdapter implements 
ResourceAdapter, Serializable {
             String jgroupsLocatorClass = 
raProperties.getJgroupsChannelLocatorClass();
             if (jgroupsLocatorClass != null) {
                String jgroupsChannelRefName = 
raProperties.getJgroupsChannelRefName();
-               endpointFactory = 
ActiveMQRaUtils.locateBroadcastEndpointFactory(jgroupsLocatorClass, 
jgroupsChannelRefName);
+               JChannel jchannel = 
ActiveMQRaUtils.locateJGroupsChannel(jgroupsLocatorClass, 
jgroupsChannelRefName);
+               endpointFactory = new ChannelBroadcastEndpointFactory(jchannel, 
jgroupsChannel);
             }
             if (endpointFactory == null) {
                throw new IllegalArgumentException("must provide either 
TransportType or DiscoveryGroupAddress and DiscoveryGroupPort for 
ResourceAdapter Connection Factory");

Reply via email to