001
014
015 package com.liferay.portal.kernel.cluster;
016
017 import com.liferay.registry.Registry;
018 import com.liferay.registry.RegistryUtil;
019 import com.liferay.registry.ServiceReference;
020 import com.liferay.registry.ServiceTracker;
021 import com.liferay.registry.ServiceTrackerCustomizer;
022
023 import java.util.Map;
024 import java.util.concurrent.ConcurrentHashMap;
025
026
029 public class ClusterInvokeAcceptorUtil {
030
031 public static ClusterInvokeAcceptor getClusterInvokeAcceptor(
032 String clusterInvokeAcceptorName) {
033
034 return _clusterInvokeAcceptors.get(clusterInvokeAcceptorName);
035 }
036
037 private ClusterInvokeAcceptorUtil() {
038 }
039
040 private static final Map<String, ClusterInvokeAcceptor>
041 _clusterInvokeAcceptors = new ConcurrentHashMap<>();
042 private static final ServiceTracker
043 <ClusterInvokeAcceptor, ClusterInvokeAcceptor> _serviceTracker;
044
045 static {
046 Registry registry = RegistryUtil.getRegistry();
047
048 _serviceTracker = registry.trackServices(
049 ClusterInvokeAcceptor.class,
050 new ClusterInvokeAcceptorServiceTrackerCustomizer());
051
052 _serviceTracker.open();
053 }
054
055 private static class ClusterInvokeAcceptorServiceTrackerCustomizer
056 implements
057 ServiceTrackerCustomizer
058 <ClusterInvokeAcceptor, ClusterInvokeAcceptor> {
059
060 @Override
061 public ClusterInvokeAcceptor addingService(
062 ServiceReference<ClusterInvokeAcceptor> serviceReference) {
063
064 Registry registry = RegistryUtil.getRegistry();
065
066 ClusterInvokeAcceptor clusterInvokeAcceptor = registry.getService(
067 serviceReference);
068
069 Class<?> clazz = clusterInvokeAcceptor.getClass();
070
071 _clusterInvokeAcceptors.put(clazz.getName(), clusterInvokeAcceptor);
072
073 return clusterInvokeAcceptor;
074 }
075
076 @Override
077 public void modifiedService(
078 ServiceReference<ClusterInvokeAcceptor> serviceReference,
079 ClusterInvokeAcceptor clusterInvokeAcceptor) {
080
081 Class<?> clazz = clusterInvokeAcceptor.getClass();
082
083 _clusterInvokeAcceptors.put(clazz.getName(), clusterInvokeAcceptor);
084 }
085
086 @Override
087 public void removedService(
088 ServiceReference<ClusterInvokeAcceptor> serviceReference,
089 ClusterInvokeAcceptor clusterInvokeAcceptor) {
090
091 Registry registry = RegistryUtil.getRegistry();
092
093 registry.ungetService(serviceReference);
094
095 Class<?> clazz = clusterInvokeAcceptor.getClass();
096
097 _clusterInvokeAcceptors.remove(clazz.getName());
098 }
099
100 }
101
102 }