diff --git a/source/deployment/deployment-peer/pom.xml b/source/deployment/deployment-peer/pom.xml
index 7d94202b..d52dd8e9 100644
--- a/source/deployment/deployment-peer/pom.xml
+++ b/source/deployment/deployment-peer/pom.xml
@@ -25,11 +25,11 @@
runtime-modular-booter
${project.version}
-
+
com.jd.blockchain
storage-composite
diff --git a/source/deployment/deployment-peer/src/main/resources/assembly.xml b/source/deployment/deployment-peer/src/main/resources/assembly.xml
index 634cd8f6..881c0aef 100644
--- a/source/deployment/deployment-peer/src/main/resources/assembly.xml
+++ b/source/deployment/deployment-peer/src/main/resources/assembly.xml
@@ -39,6 +39,18 @@
com.jd.blockchain:deployment-peer
+
+ false
+ true
+ manager
+
+ com.jd.blockchain:manager-booter
+ com.jd.blockchain:manager-model
+ com.jd.blockchain:manager-service
+ com.jd.blockchain:manager-web
+ com.jd.blockchain:ump-explorer
+
+
false
true
@@ -53,11 +65,11 @@
com.jd.blockchain:runtime-modular-booter
com.jd.blockchain:peer
com.jd.blockchain:deployment-peer
- com.jd.blockchain:ump-booter
+ com.jd.blockchain:manager-booter
+ com.jd.blockchain:manager-model
+ com.jd.blockchain:manager-service
+ com.jd.blockchain:manager-web
com.jd.blockchain:ump-explorer
- com.jd.blockchain:ump-model
- com.jd.blockchain:ump-service
- com.jd.blockchain:ump-web
diff --git a/source/deployment/deployment-peer/src/main/resources/scripts/manager-stop.sh b/source/deployment/deployment-peer/src/main/resources/scripts/manager-shutdown.sh
similarity index 51%
rename from source/deployment/deployment-peer/src/main/resources/scripts/manager-stop.sh
rename to source/deployment/deployment-peer/src/main/resources/scripts/manager-shutdown.sh
index b7155c88..e5f6b292 100644
--- a/source/deployment/deployment-peer/src/main/resources/scripts/manager-stop.sh
+++ b/source/deployment/deployment-peer/src/main/resources/scripts/manager-shutdown.sh
@@ -4,13 +4,13 @@
BOOT_HOME=$(cd `dirname $0`;cd ../; pwd)
#获取进程PID
-PID=`ps -ef | grep $BOOT_HOME/ext/ump-booter | grep -v grep | awk '{print $2}'`
+PID=`ps -ef | grep $BOOT_HOME/manager/manager-booter | grep -v grep | awk '{print $2}'`
#通过Kill命令将进程杀死
if [ -z "$PID" ]; then
- echo "Unable to find UMP PID. stop aborted."
+ echo "Unable to find JDChain Manager PID. stop aborted."
else
echo "Start to kill PID = $PID ..."
kill -9 $PID
- echo "Unified Management Platform has been stopped ..."
+ echo "JDChain Manager has been stopped ..."
fi
\ No newline at end of file
diff --git a/source/deployment/deployment-peer/src/main/resources/scripts/manager-start.sh b/source/deployment/deployment-peer/src/main/resources/scripts/manager-start.sh
deleted file mode 100644
index 6c1f44af..00000000
--- a/source/deployment/deployment-peer/src/main/resources/scripts/manager-start.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-HOME=$(cd `dirname $0`;cd ../; pwd)
-UMP=$(ls $HOME/ext | grep ump-booter-)
-if [ ! -n "UMP" ]; then
- echo "Unified Management Platform Is Null !!!"
-else
- nohup java -jar -server -Djump.log=$HOME $HOME/ext/$UMP -p 8000 $* >$HOME/bin/jump.out 2>&1 &
-fi
\ No newline at end of file
diff --git a/source/deployment/deployment-peer/src/main/resources/scripts/manager-startup.sh b/source/deployment/deployment-peer/src/main/resources/scripts/manager-startup.sh
new file mode 100644
index 00000000..8336e219
--- /dev/null
+++ b/source/deployment/deployment-peer/src/main/resources/scripts/manager-startup.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+HOME=$(cd `dirname $0`;cd ../; pwd)
+UMP=$(ls $HOME/manager | grep manager-booter-)
+if [ ! -n "UMP" ]; then
+ echo "JDChain Manager Is Null !!!"
+else
+ nohup java -jar -server -Djump.log=$HOME $HOME/manager/$UMP -home $HOME -p 8000 $* >$HOME/bin/jump.out 2>&1 &
+fi
\ No newline at end of file
diff --git a/source/manager/manager-booter/pom.xml b/source/manager/manager-booter/pom.xml
index 263dac1d..2217ad3f 100644
--- a/source/manager/manager-booter/pom.xml
+++ b/source/manager/manager-booter/pom.xml
@@ -82,6 +82,34 @@
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+ src/main/resources/META-INF/MANIFEST.MF
+
+ com.jd.blockchain.ump.UmpBooter
+ false
+ false
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-deploy-plugin
+ 2.8.2
+
+ true
+
+
+
+
+
+
diff --git a/source/manager/manager-booter/src/main/java/com/jd/blockchain/ump/UmpBooter.java b/source/manager/manager-booter/src/main/java/com/jd/blockchain/ump/UmpBooter.java
index 2db451fb..746f5bff 100644
--- a/source/manager/manager-booter/src/main/java/com/jd/blockchain/ump/UmpBooter.java
+++ b/source/manager/manager-booter/src/main/java/com/jd/blockchain/ump/UmpBooter.java
@@ -1,11 +1,15 @@
package com.jd.blockchain.ump;
import com.jd.blockchain.ump.web.RetrievalConfigListener;
+import com.jd.blockchain.ump.web.UmpConfiguration;
import org.springframework.boot.SpringApplication;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
@@ -13,11 +17,13 @@ import java.util.Properties;
public class UmpBooter {
+ private static final String ARG_HOME = "-home";
+
private static final String ARG_PORT = "-p";
private static final String ARG_HOST = "-h";
- private static final String CONFIG = "BOOT-INF" + File.separator + "classes" + File.separator + "config.properties";
+ private static final String CONFIG = "/config.properties";
private static final String CONFIG_APPLICATION = "BOOT-INF" + File.separator + "classes" + File.separator + "application.properties";
@@ -33,9 +39,20 @@ public class UmpBooter {
private static final String CONFIG_PROP_DB_URL_DEFAULT = "rocksdb://#project#/jumpdb";
+ private static String HOME_DIR = null;
+
public static void main(String[] args) {
- startServer(server(args));
- System.out.println("Unified Management Platform Server Start SUCCESS !!!");
+ try {
+ // 设置相关参数
+ Server server = server(args);
+ // 加载libs/manager下的jar包
+ loadJars();
+ // 启动Server
+ startServer(server);
+ System.out.println("Unified Management Platform Server Start SUCCESS !!!");
+ } catch (Exception e) {
+ System.err.println(e);
+ }
}
private static void startServer(Server server) {
@@ -66,9 +83,12 @@ public class UmpBooter {
springApplication.run(args);
}
- private static Server server(String[] args) {
+ private static Server server(String[] args) throws Exception {
Server defaultServer = serverFromConfig();
if (args == null || args.length == 0) {
+
+ // 获取当前Class所在路径
+ HOME_DIR = UmpBooter.class.getResource("").toURI().getPath();
return defaultServer;
}
String host = null;
@@ -82,6 +102,8 @@ public class UmpBooter {
host = args[i + 1];
} else if (arg.equals(ARG_PORT)) {
port = Integer.parseInt(args[i + 1]);
+ } else if (arg.equals(ARG_HOME)) {
+ HOME_DIR = args[i + 1];
}
}
@@ -98,7 +120,7 @@ public class UmpBooter {
private static Server serverFromConfig() {
try {
- InputStream inputStream = UmpBooter.class.getResourceAsStream(File.separator + CONFIG);
+ InputStream inputStream = UmpBooter.class.getResourceAsStream(CONFIG);
if (inputStream == null) {
System.err.println("InputStream is NULL !!!");
}
@@ -114,6 +136,55 @@ public class UmpBooter {
}
}
+ private static void loadJars() {
+ // 获取两个路径下所有的正确的Jar包
+ URL[] libsJars = totalURLs();
+
+ URLClassLoader libClassLoader = new URLClassLoader(libsJars, UmpBooter.class.getClassLoader());
+
+ Thread.currentThread().setContextClassLoader(libClassLoader);
+ }
+
+ public static URL[] totalURLs() {
+ List totalURLs = new ArrayList<>();
+ totalURLs.addAll(libsPathURLs());
+ totalURLs.addAll(managerPathURLs());
+ URL[] totalURLArray = new URL[totalURLs.size()];
+ return totalURLs.toArray(totalURLArray);
+ }
+
+ public static List libsPathURLs() {
+ try {
+ File libsDir = new File(HOME_DIR + File.separator + "libs");
+ File[] jars = libsDir.listFiles(f -> f.getName().endsWith(".jar") && f.isFile() && !f.getName().contains("-booter-"));
+ List libsPathURLs = new ArrayList<>();
+ if (jars != null && jars.length > 0) {
+ for (int i = 0; i < jars.length; i++) {
+ libsPathURLs.add(jars[i].toURI().toURL());
+ }
+ }
+ return libsPathURLs;
+ } catch (MalformedURLException e) {
+ throw new IllegalStateException(e.getMessage(), e);
+ }
+ }
+
+ public static List managerPathURLs() {
+ try {
+ File managerDir = new File(HOME_DIR + File.separator + "manager");
+ File[] jars = managerDir.listFiles(f -> f.getName().endsWith(".jar") && f.isFile());
+ List managerPathURLs = new ArrayList<>();
+ if (jars != null && jars.length > 0) {
+ for (int i = 0; i < jars.length; i++) {
+ managerPathURLs.add(jars[i].toURI().toURL());
+ }
+ }
+ return managerPathURLs;
+ } catch (MalformedURLException e) {
+ throw new IllegalStateException(e.getMessage(), e);
+ }
+ }
+
private static class Server {
private String host;
@@ -143,5 +214,13 @@ public class UmpBooter {
public void setPort(int port) {
this.port = port;
}
+
+ public String getDbUrl() {
+ return dbUrl;
+ }
+
+ public void setDbUrl(String dbUrl) {
+ this.dbUrl = dbUrl;
+ }
}
}
diff --git a/source/manager/manager-booter/src/main/resources/META-INF/MANIFEST.MF b/source/manager/manager-booter/src/main/resources/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..b08cf0d7
--- /dev/null
+++ b/source/manager/manager-booter/src/main/resources/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Created-By: 1.8.0
+Built-By: shaozhuguang@jd.com
+Extension-Name: JDChain
+Specification-Title: JDChain
+Specification-Vendor: JD Software Foundation
+Implementation-Vendor: JD Software Foundation
+Implementation-URL: http://ledger.jd.com
+Build-Jdk: 1.8.0
+
diff --git a/source/manager/manager-booter/src/main/resources/scripts/jump-start.sh b/source/manager/manager-booter/src/main/resources/scripts/jump-start.sh
deleted file mode 100644
index a31a5b28..00000000
--- a/source/manager/manager-booter/src/main/resources/scripts/jump-start.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-HOME=$(cd `dirname $0`;cd ../; pwd)
-UMP=$(ls $HOME/ext | grep ump-booter-)
-if [ ! -n "UMP" ]; then
- echo "Unified Management Platform Is Null !!!"
-else
- nohup java -jar -server -Djump.log=$HOME $HOME/ext/$UMP $* >$HOME/bin/jump.out 2>&1 &
-fi
\ No newline at end of file
diff --git a/source/manager/manager-booter/src/main/resources/scripts/jump-stop.sh b/source/manager/manager-booter/src/main/resources/scripts/jump-stop.sh
deleted file mode 100644
index b7155c88..00000000
--- a/source/manager/manager-booter/src/main/resources/scripts/jump-stop.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-
-#启动Home路径
-BOOT_HOME=$(cd `dirname $0`;cd ../; pwd)
-
-#获取进程PID
-PID=`ps -ef | grep $BOOT_HOME/ext/ump-booter | grep -v grep | awk '{print $2}'`
-
-#通过Kill命令将进程杀死
-if [ -z "$PID" ]; then
- echo "Unable to find UMP PID. stop aborted."
-else
- echo "Start to kill PID = $PID ..."
- kill -9 $PID
- echo "Unified Management Platform has been stopped ..."
-fi
\ No newline at end of file
diff --git a/source/manager/manager-model/src/main/java/com/jd/blockchain/ump/model/PartiNode.java b/source/manager/manager-model/src/main/java/com/jd/blockchain/ump/model/PartiNode.java
index f5e6b988..574f1ee2 100644
--- a/source/manager/manager-model/src/main/java/com/jd/blockchain/ump/model/PartiNode.java
+++ b/source/manager/manager-model/src/main/java/com/jd/blockchain/ump/model/PartiNode.java
@@ -25,7 +25,9 @@ public class PartiNode {
configCharList.add(formatConfig(UmpConstant.PARTINODE_PUBKEY_FORMAT, pubKey));
- configCharList.addAll(partiRoleConfigs);
+ if (partiRoleConfigs != null && !partiRoleConfigs.isEmpty()) {
+ configCharList.addAll(partiRoleConfigs);
+ }
configCharList.add(formatConfig(UmpConstant.PARTINODE_INIT_HOST_FORMAT, initHost));
diff --git a/source/manager/manager-model/src/main/java/com/jd/blockchain/ump/model/config/LedgerInitConfig.java b/source/manager/manager-model/src/main/java/com/jd/blockchain/ump/model/config/LedgerInitConfig.java
index 02298315..476ff1e3 100644
--- a/source/manager/manager-model/src/main/java/com/jd/blockchain/ump/model/config/LedgerInitConfig.java
+++ b/source/manager/manager-model/src/main/java/com/jd/blockchain/ump/model/config/LedgerInitConfig.java
@@ -61,7 +61,9 @@ public class LedgerInitConfig {
configChars.add(toConfigChars(UmpConstant.PARTINODE_COUNT, partiNodes.size()));
- configChars.addAll(securityConfigs);
+ if (securityConfigs != null && !securityConfigs.isEmpty()) {
+ configChars.addAll(securityConfigs);
+ }
for (PartiNode partiNode : partiNodes) {
configChars.addAll(partiNode.toConfigChars(this.partiRolesConfigs));
diff --git a/source/manager/manager-service/src/main/java/com/jd/blockchain/ump/service/SecurityServiceHandler.java b/source/manager/manager-service/src/main/java/com/jd/blockchain/ump/service/SecurityServiceHandler.java
index a662a073..57d5fd82 100644
--- a/source/manager/manager-service/src/main/java/com/jd/blockchain/ump/service/SecurityServiceHandler.java
+++ b/source/manager/manager-service/src/main/java/com/jd/blockchain/ump/service/SecurityServiceHandler.java
@@ -1,6 +1,8 @@
package com.jd.blockchain.ump.service;
import com.jd.blockchain.ump.model.UmpConstant;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.io.File;
@@ -12,6 +14,8 @@ import java.util.Properties;
@Service
public class SecurityServiceHandler implements SecurityService {
+ private static final Logger LOGGER = LoggerFactory.getLogger(SecurityServiceHandler.class);
+
static final String SECURITY_FILE = "security.config";
private List securityConfigs = new ArrayList<>();
@@ -34,6 +38,7 @@ public class SecurityServiceHandler implements SecurityService {
@Override
public void init() {
+
try {
// 读取配置文件中的内容
InputStream currentFileInputStream = SecurityServiceHandler.class.getResourceAsStream(
@@ -78,7 +83,8 @@ public class SecurityServiceHandler implements SecurityService {
participantRoleConfigs.add(propBuild(UmpConstant.SECURITY_PARTI_ROLES_POLICY, partiRolesPolicyValue));
} else {
- throw new IllegalStateException("Can not find Properties from security.config");
+ // 打印日志即可
+ LOGGER.error("Can not find Properties from {}", SECURITY_FILE);
}
}
diff --git a/source/manager/manager-service/src/main/resources/security.config b/source/manager/manager-service/src/main/resources/security.config
index 4796e551..c90e730c 100644
--- a/source/manager/manager-service/src/main/resources/security.config
+++ b/source/manager/manager-service/src/main/resources/security.config
@@ -1,4 +1,4 @@
-security.roles=DEFAULT, ADMIN, MANAGER, GUEST
+#security.roles=DEFAULT, ADMIN, MANAGER, GUEST
security.role.DEFAULT.ledger-privileges=REGISTER_USER, REGISTER_DATA_ACCOUNT
diff --git a/source/manager/manager-booter/src/main/java/com/jd/blockchain/ump/UmpConfiguration.java b/source/manager/manager-web/src/main/java/com/jd/blockchain/ump/web/UmpConfiguration.java
similarity index 91%
rename from source/manager/manager-booter/src/main/java/com/jd/blockchain/ump/UmpConfiguration.java
rename to source/manager/manager-web/src/main/java/com/jd/blockchain/ump/web/UmpConfiguration.java
index f1e86f12..42bf8285 100644
--- a/source/manager/manager-booter/src/main/java/com/jd/blockchain/ump/UmpConfiguration.java
+++ b/source/manager/manager-web/src/main/java/com/jd/blockchain/ump/web/UmpConfiguration.java
@@ -1,4 +1,4 @@
-package com.jd.blockchain.ump;
+package com.jd.blockchain.ump.web;
import org.springframework.boot.autoconfigure.SpringBootApplication;