--- /dev/null
-
+// $Id$
+/**
+ * Copyright (C) 2014 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+package eu.etaxonomy.taxeditor.remoting.cache;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javassist.util.proxy.ProxyFactory;
+import net.sf.ehcache.Cache;
+import net.sf.ehcache.Element;
+import net.sf.ehcache.config.CacheConfiguration;
+import net.sf.ehcache.store.MemoryStoreEvictionPolicy;
+
+import org.apache.log4j.Logger;
+import org.hibernate.collection.spi.PersistentCollection;
+import org.springframework.util.ReflectionUtils;
+
+import eu.etaxonomy.cdm.api.cache.CdmServiceCacher;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager;
+
+/**
+ *
+ * This cache guarantees that
+ * - all objects put will be ancestors of CdmBase
+ * - all CdmBase objects in the cache will be already de-proxied
+ * - after any CdmBase object is put in the cache,
+ * all non-null / non-proxy CdmBase objects in the sub-graph
+ * will also be present in the cache.
+ *
+ * @author cmathew
+ * @date 14 Oct 2014
+ *
+ */
+
+public class CdmTransientEntityCacher {
+
+ private static final Logger logger = Logger.getLogger(CdmTransientEntityCacher.class);
+
+
+ private ICdmEntitySessionManager cdmEntitySessionManager;
+
+ private static CdmServiceCacher cdmServiceCacher;
+
+ private String cacheId;
+
+ private Cache cache;
+
+ private Cache cdmlibModelCache;
+
+ private static boolean isRecursiveEnabled = true;
+
+ public static enum CollectionType {
+ SET,
+ LIST,
+ MAP;
+
+ @Override
+ public String toString() {
+ return this.name().toLowerCase();
+ }
+ }
+
+ private CdmTransientEntityCacher() {
+
+ }
+
+ public CdmTransientEntityCacher(String cacheId, ICdmEntitySessionManager cdmEntitySessionManager) {
+ this.cacheId = cacheId;
+
+ cache = new Cache(getEntityCacheConfiguration(cacheId));
+ cdmServiceCacher.getDefaultCacheManager().addCache(cache);
+
+ cdmlibModelCache = CdmRemoteCacheManager.getInstance().getCdmModelGetMethodsCache();
+ this.cdmEntitySessionManager = cdmEntitySessionManager;
+ }
+
+ public CdmTransientEntityCacher(Object obj, ICdmEntitySessionManager cdmEntitySessionManager) {
+ this(obj.getClass().getName() + String.valueOf(obj.hashCode()), cdmEntitySessionManager);
+ }
+
+ /**
+ * Returns the default cache configuration.
+ *
+ * @return
+ */
+ private CacheConfiguration getEntityCacheConfiguration(String cacheId) {
+ // For a better understanding on how to size caches, refer to
+ // http://ehcache.org/documentation/configuration/cache-size
+ return new CacheConfiguration(cacheId, 500)
+ .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LFU)
+ .eternal(false)
+ // default ttl and tti set to 2 hours
+ .timeToLiveSeconds(60*60*2)
+ .timeToIdleSeconds(60*60*2);
+
+ }
+
+ public static void setDefaultCacher(CdmServiceCacher css) {
+ cdmServiceCacher = css;
+ }
+
+ /**
+ * Returns the cache corresponding to the cache id
+ *
+ * @param cacheId
+ * @return
+ */
+ private Cache getCache() {
+ return cdmServiceCacher.getDefaultCacheManager().getCache(cacheId);
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T extends Object> T load(T obj, boolean recursive) {
+ if(obj instanceof CdmBase) {
+ return load(obj, recursive);
+ } else if (obj instanceof Map) {
+ return (T) load((Map<T,T>)obj, recursive);
+ } else if (obj instanceof Collection) {
+ return (T) load((Collection<T>)obj, recursive);
+ }
+
+ return obj;
+ }
+
+ @SuppressWarnings("unchecked")
+ private <T extends Object> T loadRecursive(T obj, Set<CdmBase> alreadyVisitedEntities) {
+ if(obj instanceof CdmBase) {
+ return (T) loadRecursive((CdmBase)obj, alreadyVisitedEntities);
+ } else if (obj instanceof Map) {
+ return (T) load((Map<T,T>)obj, alreadyVisitedEntities);
+ } else if (obj instanceof Collection) {
+ return (T) load((Collection<T>)obj, alreadyVisitedEntities);
+ }
+
+ logger.info("No caching yet for type " + obj.getClass().getName());
+
+ return obj;
+ }
+
+ public <T extends Object> Map<T,T> load(Map<T,T> map, boolean recursive){
+ if(isRecursiveEnabled && recursive) {
+ logger.info("---- starting recursive load for cdm entity map");
+ Set<CdmBase> alreadyVisitedEntities = new HashSet<CdmBase>();
+ Map<T,T> cachedMap = load(map, alreadyVisitedEntities);
+ alreadyVisitedEntities.clear();
+ logger.info("---- ending recursive load for cdm entity map \n");
+ return cachedMap;
+ } else {
+ return load(map, null);
+ }
+ }
+
+
+ private <T extends Object> Map<T,T> load(Map<T,T> map, Set<CdmBase> alreadyVisitedEntities){
+ if(map == null || map.isEmpty()) {
+ return map;
+ }
+
+ int originalMapSize = map.size();
+ Object[] result = new Object[ map.size() * 2 ];
+ Iterator<Map.Entry<T,T>> iter = map.entrySet().iterator();
+ int i=0;
+ while ( iter.hasNext() ) {
+ Map.Entry<T,T> e = iter.next();
+ result[i++] = e.getKey();
+ result[i++] = e.getValue();
+ }
+
+ for(i=0; i<result.length;i++) {
+ if(alreadyVisitedEntities == null) {
+ result[i] = load(result[i], false);
+ } else {
+ result[i] = loadRecursive(result[i], alreadyVisitedEntities);
+ }
+ }
+ map.clear();
+ for(i = 0; i < originalMapSize; i+=2 ) {
+ map.put(
+ (T)result[i],
+ (T)result[i+1]
+ );
+ }
+ return map;
+ }
+
+ public <T extends Object> Collection<T> load(Collection<T> collection, boolean recursive){
+ Collection<T> loadedCollection;
+ if(isRecursiveEnabled && recursive) {
+ logger.info("---- starting recursive load for cdm entity collection");
+ Set<CdmBase> alreadyVisitedEntities = new HashSet<CdmBase>();
+ Collection<T> cachedCollection = load(collection, alreadyVisitedEntities);
+ alreadyVisitedEntities.clear();
+ logger.info("---- ending recursive load for cdm entity collection \n");
+ loadedCollection = cachedCollection;
+ } else {
+ loadedCollection = load(collection, null);
+ }
+ return loadedCollection;
+ }
+
+ @SuppressWarnings("unchecked")
+ private <T extends Object> Collection<T> load(Collection<T> collection, Set<CdmBase> alreadyVisitedEntities){
+ int length = collection.size();
+ Object[] result = new Object[length];
+ Iterator<T> collectionItr = collection.iterator();
+ int count = 0;
+ while(collectionItr.hasNext()) {
+ if(alreadyVisitedEntities == null) {
+ result[count] = load(collectionItr.next(), false);
+ } else {
+ result[count] = loadRecursive(collectionItr.next(), alreadyVisitedEntities);
+ }
+ count++;
+ }
+
+ collection.clear();
+
+ for ( int i = 0; i < length; i++ ) {
+ collection.add((T)result[i]);
+ }
+
+ return collection;
+ }
+
+
+ /**
+ * Puts the (Key,Value) pair of ({@link java.util.UUID}, {@link eu.etaxonomy.cdm.model.common.CdmBase}),
+ * in the cache corresponding to the given cache id
+ *
+ * @param cacheId
+ * @param uuid
+ * @param cdmEntity
+ */
+ public CdmBase load(CdmBase cdmEntity, boolean recursive) {
+ CdmBase loadedCdmBase;
+ if(isRecursiveEnabled && recursive) {
+ logger.info("---- starting recursive load for cdm entity " + cdmEntity.getClass().getName() + " with id " + cdmEntity.getId());
+ Set<CdmBase> alreadyVisitedEntities = new HashSet<CdmBase>();
+ CdmBase cb = loadRecursive(cdmEntity, alreadyVisitedEntities);
+ alreadyVisitedEntities.clear();
+ logger.info("---- ending recursive load for cdm entity " + cdmEntity.getClass().getName() + " with id " + cdmEntity.getId() + "\n");
+ loadedCdmBase = cb;
+ } else {
+ loadedCdmBase = load(cdmEntity);
+ }
+ return loadedCdmBase;
+
+ }
+
+
+ private CdmBase load(CdmBase cdmEntity) {
+ logger.info("loading object of type " + cdmEntity.getClass().getName() + " with id " + cdmEntity.getId());
+
+ // start by looking up the cdm entity in the cache
+ CdmBase cachedCdmEntity = getFromCache(cdmEntity);
+
+ if(cachedCdmEntity != null) {
+ // if cdm entity was found in cache then return ...
+ logger.info(" - object of type " + cdmEntity.getClass().getName() + " with id " + cdmEntity.getId() + " already exists");
+ return cachedCdmEntity;
+ } else {
+ // ... else save the entity in the cache
+ getCache().put(new Element(generateKey(cdmEntity), cdmEntity));
+ logger.info(" - object of type " + cdmEntity.getClass().getName() + " with id " + cdmEntity.getId() + " put in cache");
+ return cdmEntity;
+ }
+ }
+
+ private CdmBase loadRecursive(CdmBase cdmEntity, Set<CdmBase> alreadyVisitedEntities) {
+
+ CdmBase cachedCdmEntity = load(cdmEntity);
+
+ // we want to recursive through the cdmEntity (and not the cachedCdmEntity)
+ // since there could be new initialized object in the cdmEntity sub-graph
+
+ // start by getting the fields from the cdm entity
+ String className = cdmEntity.getClass().getName();
+ CdmModelFieldPropertyFromClass cmgmfc = getFromCdmlibModelCache(className);
+ if(cmgmfc != null) {
+ alreadyVisitedEntities.add(cdmEntity);
+ List<String> fields = cmgmfc.getFields();
+ for(String field : fields) {
+ // retrieve the actual object corresponding to the field.
+ // this object will be either a CdmBase or a Collection / Map
+ // with CdmBase as the generic type
+
+ // In the case that the returned is either a Collection or a Map
+ // the individual objects inside these also need to be loaded
+ // by calling the corresponding cachify method in the
+ // CdmEntityCachingUtils
+
+ CdmBase cdmEntityInSubGraph = getCdmBaseTypeFieldValue(cdmEntity, cachedCdmEntity, field, alreadyVisitedEntities);
+ if(cdmEntityInSubGraph != null) {
+ if(!alreadyVisitedEntities.contains(cdmEntityInSubGraph)) {
+ logger.info("recursive loading object of type " + cdmEntityInSubGraph.getClass().getName() + " with id " + cdmEntityInSubGraph.getId());
+ loadRecursive(cdmEntityInSubGraph, alreadyVisitedEntities);
+ } else {
+ logger.info("object of type " + cdmEntityInSubGraph.getClass().getName() + " with id " + cdmEntityInSubGraph.getId() + "already visited");
+ }
+ }
+ }
+ } else {
+ throw new CdmClientCacheException("CdmEntity with class " + cdmEntity.getClass().getName() + " is not found in the cdmlib model cache. " +
+ "The cache may be corrupted or not in sync with the latest model version" );
+ }
+ return cachedCdmEntity;
+ }
+
+
+ private CdmBase getCdmBaseTypeFieldValue(CdmBase cdmEntity,
+ CdmBase cachedCdmEntity,
+ String fieldName,
+ Set<CdmBase> alreadyVisitedEntities) {
+
+
+ if(cachedCdmEntity == null) {
+ throw new CdmClientCacheException("When trying to set field value, the cached cdm entity cannot be null");
+ }
+
+ Class<?> clazz = cdmEntity.getClass();
+ try {
+ // this call will search in the provided class as well as
+ // the super classes until it finds the field
+ Field field = ReflectionUtils.findField(clazz, fieldName);
+
+ if(field == null) {
+ throw new CdmClientCacheException("Field '" + fieldName
+ + "' not found when searching in class '" + clazz.getName() + "' and its supercalsses");
+ }
+ field.setAccessible(true);
+ Object o = field.get(cdmEntity);
+
++ // in the case that we are (re) loading a cdm entity with a null (most probably deleted) field
++ // we need to set the same field in the corresponding cached cdm entity to null
++ if(o == null) {
++ field.set(cachedCdmEntity, null);
++ }
++
+ CdmBase cdmEntityInSubGraph = null;
+ if(o != null
+ && !ProxyFactory.isProxyClass(o.getClass())
+ && !(o instanceof PersistentCollection) ) {
+
+ if(CdmBase.class.isAssignableFrom(o.getClass())) {
+ logger.info("found initialised cdm entity '" + fieldName + "' in object of type " + clazz.getName() + " with id " + cdmEntity.getId());
+ cdmEntityInSubGraph = (CdmBase)o;
+ CdmBase cachedCdmEntityInSubGraph = getFromCache(cdmEntityInSubGraph);
+
+ if(cachedCdmEntityInSubGraph != null) {
+ if(cachedCdmEntityInSubGraph != cdmEntityInSubGraph) {
+ field.set(cachedCdmEntity, cachedCdmEntityInSubGraph);
+ }
+ } else {
+ field.set(cachedCdmEntity, cdmEntityInSubGraph);
+ }
+ } else if(o instanceof Map) {
+ loadRecursive((Map)o, alreadyVisitedEntities);
+ } else if(o instanceof Collection) {
+ loadRecursive((Collection)o, alreadyVisitedEntities);
+ }
+ }
+ // we return the original cdm entity in the sub graph because we
+ // want to continue to recurse on the input cdm entity graph
+ // and not the one in the cache
+ return cdmEntityInSubGraph;
+ } catch (SecurityException e) {
+ throw new CdmClientCacheException(e);
+ } catch (IllegalArgumentException e) {
+ throw new CdmClientCacheException(e);
+ } catch (IllegalAccessException e) {
+ throw new CdmClientCacheException(e);
+ }
+ }
+
+ public void put(CdmBase cdmEntity) {
+ CdmEntityCacheKey id = new CdmEntityCacheKey(cdmEntity);
+ Element cachedCdmEntityElement = getCacheElement(id);
+
+ if(cachedCdmEntityElement == null) {
+ cachedCdmEntityElement = cdmServiceCacher.getCacheElement(cdmEntity.getUuid());
+ if(cachedCdmEntityElement != null) {
+ logger.info("Cdm Entity with id : " + cdmEntity.getId() + " already exists in permanent cache. Ignoring put.");
+ return;
+ }
+ }
+
+ getCache().put(new Element(id, cdmEntity));
+ }
+
+
+ private Element getCacheElement(CdmEntityCacheKey key) {
+ return getCache().get(key);
+ }
+
+ public CdmModelFieldPropertyFromClass getFromCdmlibModelCache(String className) {
+ Element e = cdmlibModelCache.get(className);
+ if (e == null) {
+ return null;
+ } else {
+ return (CdmModelFieldPropertyFromClass) e.getObjectValue();
+ }
+ }
+
+ public CdmBase getFromCache(CdmEntityCacheKey id) {
+ Element e = getCacheElement(id);
+ if (e == null) {
+ return null;
+ } else {
+ return (CdmBase) e.getObjectValue();
+ }
+ }
+
+ public CdmBase getFromCache(Class<? extends CdmBase> clazz, int id) {
+ CdmEntityCacheKey cacheId = generateKey(clazz,id);
+ return getFromCache(cacheId);
+ }
+
+ public CdmBase getFromCache(CdmBase cdmBase) {
+
+ CdmEntityCacheKey cacheId = generateKey(cdmBase);
+ CdmBase cachedCdmEntity = getFromCache(cacheId);
+
+ if(cachedCdmEntity == null) {
+ // ... then try the permanent (uuid-based) cache
+ cachedCdmEntity = cdmServiceCacher.getFromCache(cdmBase.getUuid());
+ }
+
+ return cachedCdmEntity;
+ }
+
+ public CdmBase getFromCache(CdmBase cdmBase, Class<? extends CdmBase> clazz) {
+
+ cdmBase = CdmBase.deproxy(cdmBase, clazz);
+ CdmEntityCacheKey cacheId = generateKey(cdmBase);
+
+ CdmBase cachedCdmEntity = getFromCache(cacheId);
+
+ if(cachedCdmEntity == null) {
+ // ... then try the permanent (uuid-based) cache
+ cachedCdmEntity = cdmServiceCacher.getFromCache(cdmBase.getUuid());
+ }
+
+ return cachedCdmEntity;
+ }
+
+ public List<CdmBase> getAllEntities() {
+ List<CdmBase> entities = new ArrayList<CdmBase>();
+ Map<String, CdmBase> elementsMap = getCache().getAllWithLoader(getCache().getKeys(), null);
+ for (Map.Entry<String, CdmBase> entry : elementsMap.entrySet()) {
+ entities.add(entry.getValue());
+ }
+ return entities;
+ }
+
+ public boolean exists(CdmEntityCacheKey key) {
+ return (getCacheElement(key) != null);
+ }
+
+ public boolean existsAndIsNotNull(CdmEntityCacheKey id) {
+ return getFromCache(id) != null;
+ }
+
+ public void dispose() {
+ cache.removeAll();
+ cache.flush();
+ }
+
+
+ public static CdmEntityCacheKey generateKey(Class<? extends CdmBase> clazz, int id) {
+ return new CdmEntityCacheKey(clazz, id);
+ }
+
+
+ public static CdmEntityCacheKey generateKey(CdmBase cdmBase) {
+ Class<? extends CdmBase> entityClass = cdmBase.getClass();
+ int id = cdmBase.getId();
+ return new CdmEntityCacheKey(entityClass, id);
+ }
+
+ public static boolean isRecursiveEnabled() {
+ return isRecursiveEnabled;
+ }
+
+ public static void setRecursiveEnabled(boolean ire) {
+ isRecursiveEnabled = ire;
+ }
+
+}
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd\r
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">\r
\r
- \r
- <bean id="agentService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/agent.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IAgentService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="annotationService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/annotation.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IAnnotationService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="auditeventService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/auditevent.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IAuditEventService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="classificationService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/classification.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IClassificationService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="collectionService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/collection.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.ICollectionService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="commonService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/common.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.ICommonService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="descriptionService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/description.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IDescriptionService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
- \r
- <bean id="editGeoService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/editgeo.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.ext.geo.IEditGeoService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="featureNodeService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/featurenode.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IFeatureNodeService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="featureTreeService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/featuretree.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IFeatureTreeService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="groupService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/group.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IGroupService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="identificationKeyService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/identificationkey.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IIdentificationKeyService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="locationService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/location.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.ILocationService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="markerService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/marker.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IMarkerService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="mediaService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/media.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IMediaService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="nameService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/name.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.INameService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="occurrenceService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/occurrence.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IOccurrenceService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="polytomousKeyNodeService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/polytomouskeynode.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="polytomousKeyService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/polytomouskey.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IPolytomousKeyService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="referenceService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/reference.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IReferenceService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
- \r
-<!-- \r
- <bean id="serviceService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/service.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IService</value>\r
- </property>\r
- </bean>\r
- -->\r
- \r
- <bean id="taxonNodeService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/taxonnode.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.ITaxonNodeService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="taxonService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/taxon.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.ITaxonService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="termService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/term.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.ITermService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="userService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/user.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IUserService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="vocabularyService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/vocabulary.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IVocabularyService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="workingSetService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/workingset.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IWorkingSetService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
- \r
- <bean id="grantedAuthorityService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/grantedauthority.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IGrantedAuthorityService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
- \r
- <bean id="databaseService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/database.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.IDatabaseService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
- \r
- <bean id="lsidAuthorityService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/lsidauthoruty.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.lsid.LSIDAuthorityService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
- \r
- <bean id="lsidMetadataService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/lsidmetadata.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.lsid.LSIDMetadataService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
- \r
- <bean id="lsiDataService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/lsiddata.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.lsid.LSIDDataService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
-\r
- <bean id="providerManager"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/authenticationManager.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>org.springframework.security.authentication.AuthenticationManager</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
- \r
- <bean id="primerService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/primer.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.molecular.IPrimerService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
- \r
- <bean id="amplificationService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/amplification.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.molecular.IAmplificationService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
- \r
- <bean id="sequenceService"\r
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
- <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/sequence.service</value>\r
- </property>\r
- <property name="serviceInterface">\r
- <value>eu.etaxonomy.cdm.api.service.molecular.ISequenceService</value>\r
- </property>\r
- <property name="httpInvokerRequestExecutor">\r
- <bean class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
- </property>\r
- </bean>\r
+\r
+ <bean id="agentService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/agent.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/agent.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IAgentService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="annotationService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/annotation.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/annotation.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IAnnotationService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="auditeventService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/auditevent.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/auditevent.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IAuditEventService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="classificationService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/classification.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/classification.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IClassificationService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="collectionService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/collection.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/collection.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.ICollectionService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="commonService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/common.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/common.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.ICommonService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="descriptionService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/description.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/description.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IDescriptionService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="editGeoService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/editgeo.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/editgeo.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.ext.geo.IEditGeoService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="featureNodeService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/featurenode.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/featurenode.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IFeatureNodeService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="featureTreeService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/featuretree.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/featuretree.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IFeatureTreeService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="groupService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/group.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/group.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IGroupService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="identificationKeyService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/identificationkey.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/identificationkey.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IIdentificationKeyService\r
+ </value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="locationService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/location.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/location.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.ILocationService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="markerService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/marker.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/marker.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IMarkerService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="mediaService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/media.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/media.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IMediaService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="nameService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/name.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/name.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.INameService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="occurrenceService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/occurrence.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/occurrence.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IOccurrenceService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="polytomousKeyNodeService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/polytomouskeynode.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/polytomouskeynode.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService\r
+ </value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="polytomousKeyService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/polytomouskey.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/polytomouskey.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IPolytomousKeyService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="referenceService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/reference.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/reference.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IReferenceService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <!-- <bean id="serviceService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> \r
+ <property name="serviceUrl"> <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/service.service</value> \r
+ </property> <property name="serviceInterface"> <value>eu.etaxonomy.cdm.api.service.IService</value> \r
+ </property> </bean> -->\r
+\r
+ <bean id="taxonNodeService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/taxonnode.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/taxonnode.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.ITaxonNodeService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="taxonService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/taxon.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/taxon.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.ITaxonService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="termService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/term.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/term.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.ITermService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean class="eu.etaxonomy.taxeditor.service.TermServiceRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="userService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/user.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting-public/user.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IUserService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
- class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
++ class="org.springframework.remoting.httpinvoker.SimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="vocabularyService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/vocabulary.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/vocabulary.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IVocabularyService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="workingSetService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/workingset.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/workingset.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IWorkingSetService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="grantedAuthorityService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/grantedauthority.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/grantedauthority.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IGrantedAuthorityService\r
+ </value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="databaseService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/database.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/database.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IDatabaseService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="lsidAuthorityService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/lsidauthoruty.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/lsidauthoruty.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.lsid.LSIDAuthorityService\r
+ </value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="lsidMetadataService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/lsidmetadata.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/lsidmetadata.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.lsid.LSIDMetadataService\r
+ </value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="lsiDataService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/lsiddata.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/lsiddata.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.lsid.LSIDDataService</value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="providerManager"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/authenticationManager.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/authenticationManager.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>org.springframework.security.authentication.AuthenticationManager\r
+ </value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="primerService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/primer.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/primer.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.molecular.IPrimerService\r
+ </value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="amplificationService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/amplification.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/amplification.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.molecular.IAmplificationService\r
+ </value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="sequenceService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/sequence.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/sequence.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.molecular.ISequenceService\r
+ </value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="entityValidationResultService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/entityvalidationresult.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/entityvalidationresult.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IEntityValidationResultService\r
+ </value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="entityConstraintViolationService"\r
+ class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">\r
+ <property name="serviceUrl">\r
- <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/entityconstraintviolation.service\r
- </value>\r
++ <value>http://${remoteServer}:${remotePort}/${remoteContext}/remoting/entityconstraintviolation.service</value>\r
+ </property>\r
+ <property name="serviceInterface">\r
+ <value>eu.etaxonomy.cdm.api.service.IEntityConstraintViolationService\r
+ </value>\r
+ </property>\r
+ <property name="httpInvokerRequestExecutor">\r
+ <bean\r
+ class="org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />\r
+ </property>\r
+ </bean>\r
\r
\r
\r