diff --git a/antchain-bridge-bcdns/pom.xml b/antchain-bridge-bcdns/pom.xml
index a1ae4899..a147b311 100644
--- a/antchain-bridge-bcdns/pom.xml
+++ b/antchain-bridge-bcdns/pom.xml
@@ -6,7 +6,7 @@
com.alipay.antchain.bridge
antchain-bridge-bcdns
- 0.2.3
+ 0.2.2
8
diff --git a/antchain-bridge-commons/pom.xml b/antchain-bridge-commons/pom.xml
index aca9ebd1..32af3ccb 100644
--- a/antchain-bridge-commons/pom.xml
+++ b/antchain-bridge-commons/pom.xml
@@ -6,7 +6,7 @@
com.alipay.antchain.bridge
antchain-bridge-commons
- 0.2.3
+ 0.2.2
8
diff --git a/antchain-bridge-plugin-lib/pom.xml b/antchain-bridge-plugin-lib/pom.xml
index ded39613..a70d8873 100644
--- a/antchain-bridge-plugin-lib/pom.xml
+++ b/antchain-bridge-plugin-lib/pom.xml
@@ -6,7 +6,7 @@
com.alipay.antchain.bridge
antchain-bridge-plugin-lib
- 0.2.3
+ 0.2.2
8
diff --git a/antchain-bridge-plugin-manager/pom.xml b/antchain-bridge-plugin-manager/pom.xml
index 4c0f9b0a..aa502c5c 100644
--- a/antchain-bridge-plugin-manager/pom.xml
+++ b/antchain-bridge-plugin-manager/pom.xml
@@ -6,7 +6,7 @@
com.alipay.antchain.bridge
antchain-bridge-plugin-manager
- 0.2.3
+ 0.2.2
8
diff --git a/antchain-bridge-plugin-manager/src/main/java/com/alipay/antchain/bridge/plugins/manager/pf4j/PrefixBannedPluginClassloader.java b/antchain-bridge-plugin-manager/src/main/java/com/alipay/antchain/bridge/plugins/manager/pf4j/PrefixBannedPluginClassloader.java
index 6f72c953..a74c1818 100644
--- a/antchain-bridge-plugin-manager/src/main/java/com/alipay/antchain/bridge/plugins/manager/pf4j/PrefixBannedPluginClassloader.java
+++ b/antchain-bridge-plugin-manager/src/main/java/com/alipay/antchain/bridge/plugins/manager/pf4j/PrefixBannedPluginClassloader.java
@@ -25,13 +25,21 @@
import org.pf4j.PluginClassLoader;
import org.pf4j.PluginDescriptor;
import org.pf4j.PluginManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class PrefixBannedPluginClassloader extends PluginClassLoader {
+ private static final Logger log = LoggerFactory.getLogger(PrefixBannedPluginClassloader.class);
+
private static final String JAVA_PACKAGE_PREFIX = "java.";
private static final String PLUGIN_PACKAGE_PREFIX = "org.pf4j.";
+ private static final String ACB_SPI_PACKAGE_PREFIX = "com.alipay.antchain.bridge.plugins.spi";
+
+ private static final String ACB_COMMONS_PACKAGE_PREFIX = "com.alipay.antchain.bridge.plugins.commons";
+
/**
* Banned the dependency with the prefix path to read the resource
*/
@@ -134,4 +142,61 @@ public Enumeration getResources(String name) throws IOException {
return Collections.enumeration(resources);
}
+
+ @Override
+ public Class> loadClass(String className) throws ClassNotFoundException {
+ synchronized (getClassLoadingLock(className)) {
+ // first check whether it's a system class, delegate to the system loader
+ if (className.startsWith(JAVA_PACKAGE_PREFIX)) {
+ return findSystemClass(className);
+ }
+
+ // if the class is part of the plugin engine use parent class loader
+ if (
+ (className.startsWith(PLUGIN_PACKAGE_PREFIX) && !className.startsWith("org.pf4j.demo") && !className.startsWith("org.pf4j.test")) ||
+ className.startsWith(ACB_SPI_PACKAGE_PREFIX) ||
+ className.startsWith(ACB_COMMONS_PACKAGE_PREFIX) ||
+ className.startsWith("org.slf4j.")
+ ) {
+// log.trace("Delegate the loading of PF4J class '{}' to parent", className);
+ return getParent().loadClass(className);
+ }
+
+ log.trace("Received request to load class '{}'", className);
+
+ // second check whether it's already been loaded
+ Class> loadedClass = findLoadedClass(className);
+ if (loadedClass != null) {
+ log.trace("Found loaded class '{}'", className);
+ return loadedClass;
+ }
+
+ for (ClassLoadingStrategy.Source classLoadingSource : classLoadingStrategy.getSources()) {
+ Class> c = null;
+ try {
+ switch (classLoadingSource) {
+ case APPLICATION:
+ c = super.loadClass(className);
+ break;
+ case PLUGIN:
+ c = findClass(className);
+ break;
+ case DEPENDENCIES:
+ c = loadClassFromDependencies(className);
+ break;
+ }
+ } catch (ClassNotFoundException ignored) {
+ }
+
+ if (c != null) {
+ log.trace("Found class '{}' in {} classpath", className, classLoadingSource);
+ return c;
+ } else {
+ log.trace("Couldn't find class '{}' in {} classpath", className, classLoadingSource);
+ }
+ }
+
+ throw new ClassNotFoundException(className);
+ }
+ }
}
diff --git a/antchain-bridge-spi/pom.xml b/antchain-bridge-spi/pom.xml
index 58902832..49e0cb01 100644
--- a/antchain-bridge-spi/pom.xml
+++ b/antchain-bridge-spi/pom.xml
@@ -6,7 +6,7 @@
com.alipay.antchain.bridge
antchain-bridge-spi
- 0.2.3
+ 0.2.2
8
diff --git a/pom.xml b/pom.xml
index 86a8a5c4..a0d998e8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
pom
com.alipay.antchain.bridge
antchain-bridge-sdk
- 0.2.3
+ 0.2.2
antchain-bridge-commons