From 00bfd67e2accd5a54e346339dbd13864cf8dbe3c Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 15 Aug 2016 16:08:00 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=BC=D0=BE?= =?UTF-8?q?=D0=B4=D1=83=D0=BB=D0=B8:=20McProcessServer=20=D0=B8=20McScreen?= =?UTF-8?q?Server?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Данные модули реализуют один из способов создания процесса сервера Minecraft. Process - это создание контролируемого процесса, который завязан на самом ASys. Проще говоря, выключится ASys - "упадет" процесс. Screen - подходит только для Unix-based систем (или запуск в Cygwin). Для запуска процесса используется утилита screen. Для контроля работы процесса так же задействуются утилиты pgrep и ps. Созданный процесс является неконтролируемым и при отключении ASys, созданный процесс продолжит "жизнь". --- McProcessServer/pom.xml | 73 +++++++++++++++++++ .../main/java/asys/mcserver/Activator.java | 32 ++++++++ .../mcserver/MinecraftProcessServer.java | 2 +- McScreenServer/pom.xml | 73 +++++++++++++++++++ .../main/java/asys/mcserver/Activator.java | 32 ++++++++ .../asys}/mcserver/MinecraftScreenServer.java | 2 +- 6 files changed, 212 insertions(+), 2 deletions(-) create mode 100644 McProcessServer/pom.xml create mode 100644 McProcessServer/src/main/java/asys/mcserver/Activator.java rename {SingleServer/src/main/java/asys/singleserver => McProcessServer/src/main/java/asys}/mcserver/MinecraftProcessServer.java (98%) create mode 100644 McScreenServer/pom.xml create mode 100644 McScreenServer/src/main/java/asys/mcserver/Activator.java rename {SingleServer/src/main/java/asys/singleserver => McScreenServer/src/main/java/asys}/mcserver/MinecraftScreenServer.java (98%) diff --git a/McProcessServer/pom.xml b/McProcessServer/pom.xml new file mode 100644 index 0000000..3677896 --- /dev/null +++ b/McProcessServer/pom.xml @@ -0,0 +1,73 @@ + + + 4.0.0 + ASys MC-Server Process implementation + + + + DmitriyMX + mail@dmiriymx.ru + + + + + UTF-8 + 1.8 + + + asys.mcserver + process-impl + 0.1 + bundle + + + + asys + api + 0.6 + + + org.osgi + org.osgi.core + 6.0.0 + + + org.apache.felix + org.apache.felix.gogo.runtime + 0.10.0 + + + + + ${project.groupId}.${project.artifactId}-${project.version} + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5.1 + + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + + + + org.apache.felix + maven-bundle-plugin + 3.0.1 + true + + + ${project.name} + ${project.groupId}.${project.artifactId} + asys.mcserver.Activator + asys.api, * + + + + + + \ No newline at end of file diff --git a/McProcessServer/src/main/java/asys/mcserver/Activator.java b/McProcessServer/src/main/java/asys/mcserver/Activator.java new file mode 100644 index 0000000..cd7ae5a --- /dev/null +++ b/McProcessServer/src/main/java/asys/mcserver/Activator.java @@ -0,0 +1,32 @@ +/* + * DmitriyMX + * 2016-08-15 + */ +package asys.mcserver; + +import asys.api.MinecraftServer; +import asys.api.MinecraftServerFactory; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; + +import java.io.File; + +public class Activator implements BundleActivator, MinecraftServerFactory { + private ServiceRegistration service; + + @Override + public void start(BundleContext bundleContext) throws Exception { + service = bundleContext.registerService(MinecraftServerFactory.class.getName(), this, null); + } + + @Override + public void stop(BundleContext bundleContext) throws Exception { + service.unregister(); + } + + @Override + public MinecraftServer createServer(String name, File directory, String mainJar, String jvmArgs, String params) { + return new MinecraftProcessServer(name, directory, mainJar, jvmArgs, params); + } +} diff --git a/SingleServer/src/main/java/asys/singleserver/mcserver/MinecraftProcessServer.java b/McProcessServer/src/main/java/asys/mcserver/MinecraftProcessServer.java similarity index 98% rename from SingleServer/src/main/java/asys/singleserver/mcserver/MinecraftProcessServer.java rename to McProcessServer/src/main/java/asys/mcserver/MinecraftProcessServer.java index aeaca0d..8ad7e92 100644 --- a/SingleServer/src/main/java/asys/singleserver/mcserver/MinecraftProcessServer.java +++ b/McProcessServer/src/main/java/asys/mcserver/MinecraftProcessServer.java @@ -2,7 +2,7 @@ * DmitriyMX * 2016-08-15 */ -package asys.singleserver.mcserver; +package asys.mcserver; import asys.api.MinecraftServer; diff --git a/McScreenServer/pom.xml b/McScreenServer/pom.xml new file mode 100644 index 0000000..259c175 --- /dev/null +++ b/McScreenServer/pom.xml @@ -0,0 +1,73 @@ + + + 4.0.0 + ASys MC-Server Screen implementation + + + + DmitriyMX + mail@dmiriymx.ru + + + + + UTF-8 + 1.8 + + + asys.mcserver + screen-impl + 0.1 + bundle + + + + asys + api + 0.6 + + + org.osgi + org.osgi.core + 6.0.0 + + + org.apache.felix + org.apache.felix.gogo.runtime + 0.10.0 + + + + + ${project.groupId}.${project.artifactId}-${project.version} + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5.1 + + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + + + + org.apache.felix + maven-bundle-plugin + 3.0.1 + true + + + ${project.name} + ${project.groupId}.${project.artifactId} + asys.mcserver.Activator + asys.api, * + + + + + + \ No newline at end of file diff --git a/McScreenServer/src/main/java/asys/mcserver/Activator.java b/McScreenServer/src/main/java/asys/mcserver/Activator.java new file mode 100644 index 0000000..5829c28 --- /dev/null +++ b/McScreenServer/src/main/java/asys/mcserver/Activator.java @@ -0,0 +1,32 @@ +/* + * DmitriyMX + * 2016-08-15 + */ +package asys.mcserver; + +import asys.api.MinecraftServer; +import asys.api.MinecraftServerFactory; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; + +import java.io.File; + +public class Activator implements BundleActivator, MinecraftServerFactory { + private ServiceRegistration service; + + @Override + public void start(BundleContext bundleContext) throws Exception { + service = bundleContext.registerService(MinecraftServerFactory.class.getName(), this, null); + } + + @Override + public void stop(BundleContext bundleContext) throws Exception { + service.unregister(); + } + + @Override + public MinecraftServer createServer(String name, File directory, String mainJar, String jvmArgs, String params) { + return new MinecraftScreenServer(name, directory, mainJar, jvmArgs, params); + } +} diff --git a/SingleServer/src/main/java/asys/singleserver/mcserver/MinecraftScreenServer.java b/McScreenServer/src/main/java/asys/mcserver/MinecraftScreenServer.java similarity index 98% rename from SingleServer/src/main/java/asys/singleserver/mcserver/MinecraftScreenServer.java rename to McScreenServer/src/main/java/asys/mcserver/MinecraftScreenServer.java index c8e7d97..1f4b340 100644 --- a/SingleServer/src/main/java/asys/singleserver/mcserver/MinecraftScreenServer.java +++ b/McScreenServer/src/main/java/asys/mcserver/MinecraftScreenServer.java @@ -2,7 +2,7 @@ * DmitriyMX * 2016-08-15 */ -package asys.singleserver.mcserver; +package asys.mcserver; import asys.api.MinecraftServer;