diff --git a/apm-collector/apm-collector-boot/bin/collector-service.bat b/apm-collector/apm-collector-boot/bin/collector-service.bat
new file mode 100755
index 0000000000000000000000000000000000000000..d42686a9d923464f5eae5ed5ad3c13ceaaf7579d
--- /dev/null
+++ b/apm-collector/apm-collector-boot/bin/collector-service.bat
@@ -0,0 +1,20 @@
+@echo off
+
+setlocal
+set COLLECOTR_PROCESS_TITLE=Skywalking-Collector
+set COLLECTOR_BASE_PATH=%~dp0%..
+set COLLECTOR_RUNTIME_OPTIONS="-Xms256M -Xmx512M"
+
+set CLASSPATH=%COLLECTOR_BASE_PATH%\config;
+SET CLASSPATH=%COLLECTOR_BASE_PATH%\libs\*;%CLASSPATH%
+
+if ""%JAVA_HOME%"" == """" (
+ set _EXECJAVA=java
+) else (
+ set _EXECJAVA="%JAVA_HOME%"/bin/java
+)
+
+start /MIN "%COLLECOTR_PROCESS_TITLE%" %_EXECJAVA% "%COLLECTOR_RUNTIME_OPTIONS%" -cp "%CLASSPATH%" org.skywalking.apm.collector.boot.CollectorBootStartUp &
+echo Collector started successfully!
+
+endlocal
\ No newline at end of file
diff --git a/apm-collector/apm-collector-boot/bin/collector-service.sh b/apm-collector/apm-collector-boot/bin/collector-service.sh
new file mode 100755
index 0000000000000000000000000000000000000000..624126659e8a661ae4c5ca3c7c6c77cfbc38cf67
--- /dev/null
+++ b/apm-collector/apm-collector-boot/bin/collector-service.sh
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+
+PRG="$0"
+PRGDIR=`dirname "$PRG"`
+[ -z "$COLLECTOR_HOME" ] && COLLECTOR_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
+
+COLLECTOR_LOGS_DIR="${COLLECTOR_HOME}/logs"
+JAVA_OPTS=" -Xms256M -Xmx512M"
+
+if [ ! -d "${COLLECTOR_HOME}/logs" ]; then
+ mkdir -p "${COLLECTOR_LOGS_DIR}"
+fi
+
+_RUNJAVA=${JAVA_HOME}/bin/java
+[ -z "$JAVA_HOME" ] && _RUNJAVA=`java`
+
+CLASSPATH="$COLLECTOR_HOME/config:$CLASSPATH"
+for i in "$COLLECTOR_HOME"/libs/*.jar
+do
+ CLASSPATH="$i:$CLASSPATH"
+done
+
+echo "Starting collector...."
+eval exec "\"$_RUNJAVA\" ${JAVA_OPTS} -classpath $CLASSPATH org.skywalking.apm.collector.boot.CollectorBootStartUp \
+ 2>${COLLECTOR_LOGS_DIR}/collector.log 1> /dev/null &"
+
+retval=$?
+pid=$!
+FAIL_MSG="Collector started failure!"
+SUCCESS_MSG="Collector started successfully!"
+[ ${retval} -eq 0 ] || (echo ${FAIL_MSG}; exit ${retval})
+sleep 1
+if ! ps -p ${pid} > /dev/null ; then
+ echo ${FAIL_MSG}
+ exit 1
+fi
+echo ${SUCCESS_MSG}
\ No newline at end of file
diff --git a/apm-collector/apm-collector-boot/bin/startup.bat b/apm-collector/apm-collector-boot/bin/startup.bat
new file mode 100755
index 0000000000000000000000000000000000000000..22023060dedebf3f4f191bb1cd7a91cbcfbb1f4e
--- /dev/null
+++ b/apm-collector/apm-collector-boot/bin/startup.bat
@@ -0,0 +1,5 @@
+@echo off
+
+setlocal
+call "%~dp0"\collector-service.bat start
+endlocal
\ No newline at end of file
diff --git a/apm-collector/apm-collector-boot/bin/startup.sh b/apm-collector/apm-collector-boot/bin/startup.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7f9c0d3abe0074c15f3b5da24a6b3811b4ab9e71
--- /dev/null
+++ b/apm-collector/apm-collector-boot/bin/startup.sh
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+PRG="$0"
+PRGDIR=`dirname "$PRG"`
+EXECUTABLE=collector-service.sh
+
+exec "$PRGDIR"/"$EXECUTABLE" start
\ No newline at end of file
diff --git a/apm-collector/apm-collector-boot/pom.xml b/apm-collector/apm-collector-boot/pom.xml
index 8f089d54a31200f5d2167e9294696ecf4d1fa6c2..164119033c715daac60831361396a74a13f510b8 100644
--- a/apm-collector/apm-collector-boot/pom.xml
+++ b/apm-collector/apm-collector-boot/pom.xml
@@ -12,6 +12,13 @@
apm-collector-boot
jar
+
+ org.skywalking.apm.collector.boot.CollectorBootStartUp
+ UTF-8
+ skywalking/${artifactId}
+ ${version}
+
+
org.skywalking
@@ -54,4 +61,73 @@
${project.version}
+
+
+ skywalking-collector
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 2.3.2
+
+
+ *.xml
+ *.config
+ *.yml
+
+
+
+ ${main.class}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+ assembly
+ package
+
+ single
+
+
+
+ src/main/assembly/assembly.xml
+
+
+
+
+
+
+ com.spotify
+ docker-maven-plugin
+ ${docker.plugin.version}
+
+ false
+ ${docker.image.name}
+
+ ${docker.image.version}
+
+ ${project.basedir}/docker
+
+
+ /
+ ${project.build.directory}
+ ${build.finalName}.tar.gz
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 2.4.3
+
+ ${project.build.sourceEncoding}
+
+
+
+
\ No newline at end of file
diff --git a/apm-collector/apm-collector-boot/src/main/assembly/assembly.xml b/apm-collector/apm-collector-boot/src/main/assembly/assembly.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e0155090755ba5c14fc6d56ba9ac6f396c9fba0b
--- /dev/null
+++ b/apm-collector/apm-collector-boot/src/main/assembly/assembly.xml
@@ -0,0 +1,42 @@
+
+
+
+ tar.gz
+ zip
+
+
+
+ /libs
+ runtime
+
+
+
+
+ ${project.basedir}/bin
+ /bin
+
+ *.sh
+ *.bat
+
+ 0755
+
+
+ src/main/resources
+
+ application.yml
+ logback.xml
+
+ /config
+
+
+ ${project.build.directory}
+ /libs
+
+ ${build.finalName}.jar
+
+
+
+
\ No newline at end of file
diff --git a/apm-collector/apm-collector-boot/src/main/resources/logback.xml b/apm-collector/apm-collector-boot/src/main/resources/logback.xml
index a0ca18fb1bfa8a38d2624ab232163c757caa524e..19158044a6ad74b460fcb9d2f7b64dd84a7f74f6 100644
--- a/apm-collector/apm-collector-boot/src/main/resources/logback.xml
+++ b/apm-collector/apm-collector-boot/src/main/resources/logback.xml
@@ -1,10 +1,20 @@
+
+
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+ ${LOG_PATH}/skywalking-server-log4j2.log
+ true
+ true
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
@@ -12,5 +22,6 @@
+
\ No newline at end of file
diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java
index d728dcbc166af813a67ef302297f0568d8df2f2e..9030b1c2db4d491361c4e33ac55f20d561649f1d 100644
--- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java
+++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java
@@ -1,7 +1,8 @@
package org.skywalking.apm.collector.core.util;
-import java.io.FileReader;
+import java.io.BufferedReader;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.net.URL;
import java.util.Enumeration;
import java.util.Iterator;
@@ -41,7 +42,8 @@ public class DefinitionLoader implements Iterable {
while (urlEnumeration.hasMoreElements()) {
URL definitionFileURL = urlEnumeration.nextElement();
logger.info("definition file url: {}", definitionFileURL.getPath());
- properties.load(new FileReader(definitionFileURL.getPath()));
+ BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(definitionFileURL.openStream()));
+ properties.load(bufferedReader);
Enumeration defineItem = properties.propertyNames();
while (defineItem.hasMoreElements()) {