--- /dev/null
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.controller.clustering.services_implementation.internal;
+
+import java.lang.ref.WeakReference;
+
+import org.jboss.marshalling.ContextClassResolver;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public final class ClassResolver extends ContextClassResolver {
+ private WeakReference<ClassLoader> osgiClassLoader = null;
+ private static final Logger logger = LoggerFactory.getLogger(ClassResolver.class);
+
+ public ClassResolver() {
+ ClassLoader cl = this.getClass()
+ .getClassLoader();
+ if (cl != null) {
+ this.osgiClassLoader = new WeakReference<ClassLoader>(cl);
+ logger.trace("Acquired weak reference to OSGi classLoader {}", cl);
+ }
+ }
+
+ @Override
+ protected ClassLoader getClassLoader() {
+ ClassLoader ret = null;
+ if (this.osgiClassLoader != null) {
+ ret = this.osgiClassLoader.get();
+ if (ret != null) {
+ if (logger.isTraceEnabled()) {
+ logger.trace("Returning OSGi class loader {}", ret);
+ }
+ return ret;
+ }
+ }
+
+ logger.warn("Could not resolve classloader!");
+ return ret;
+ }
+}
import org.infinispan.Cache;
import org.infinispan.configuration.cache.Configuration;
+import org.infinispan.configuration.global.GlobalConfigurationBuilder;
+import org.infinispan.configuration.parsing.ConfigurationBuilderHolder;
+import org.infinispan.configuration.parsing.ParserRegistry;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.notifications.Listener;
}
logger.info("Starting the ClusterManager");
try {
- //FIXME keeps throwing FileNotFoundException
- this.cm = new DefaultCacheManager("config/infinispan-config.xml");
+ ParserRegistry parser = new ParserRegistry(this.getClass()
+ .getClassLoader());
+ ConfigurationBuilderHolder holder = parser.parseFile("config/infinispan-config.xml");
+ GlobalConfigurationBuilder globalBuilder = holder.getGlobalConfigurationBuilder();
+ globalBuilder.serialization()
+ .classResolver(new ClassResolver())
+ .build();
+ this.cm = new DefaultCacheManager(holder, false);
logger.debug("Allocated ClusterManager");
if (this.cm != null) {
this.cm.start();