You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2015/02/26 11:35:21 UTC
[2/6] karaf git commit: [KARAF-3541] Fix wrapper broken by the
libraries move
[KARAF-3541] Fix wrapper broken by the libraries move
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/6cc3b623
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/6cc3b623
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/6cc3b623
Branch: refs/heads/master
Commit: 6cc3b6238dd9eb3afbc7221e726dd8b54b52b55b
Parents: 15b6262
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Thu Feb 26 08:42:28 2015 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Thu Feb 26 10:45:50 2015 +0100
----------------------------------------------------------------------
wrapper/pom.xml | 5 +-
.../org/apache/karaf/wrapper/internal/Main.java | 146 -------------------
.../wrapper/internal/WrapperServiceImpl.java | 12 +-
.../karaf/wrapper/internal/service/Main.java | 146 +++++++++++++++++++
.../wrapper/internal/unix/karaf-wrapper.conf | 12 +-
.../wrapper/internal/windows/karaf-wrapper.conf | 12 +-
.../internal/windows64/karaf-wrapper.conf | 12 +-
7 files changed, 167 insertions(+), 178 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/6cc3b623/wrapper/pom.xml
----------------------------------------------------------------------
diff --git a/wrapper/pom.xml b/wrapper/pom.xml
index 3744ca0..9c469f2 100644
--- a/wrapper/pom.xml
+++ b/wrapper/pom.xml
@@ -112,15 +112,16 @@
org.apache.karaf.wrapper.commands,
org.apache.karaf.wrapper.internal,
org.apache.karaf.wrapper.internal.osgi,
+ org.apache.karaf.wrapper.internal.service,
org.apache.karaf.wrapper.management.internal,
- org.tanukisoftware.wrapper*,
- org.apache.karaf.main*,
org.apache.karaf.util.tracker
</Private-Package>
<Import-Package>
!org.apache.felix.utils.properties,
!org.apache.karaf.util.locks,
!org.apache.karaf.info,
+ !org.apache.karaf.main,
+ !org.tanukisoftware.wrapper*,
*
</Import-Package>
<Bundle-Activator>
http://git-wip-us.apache.org/repos/asf/karaf/blob/6cc3b623/wrapper/src/main/java/org/apache/karaf/wrapper/internal/Main.java
----------------------------------------------------------------------
diff --git a/wrapper/src/main/java/org/apache/karaf/wrapper/internal/Main.java b/wrapper/src/main/java/org/apache/karaf/wrapper/internal/Main.java
deleted file mode 100644
index 8f3060e..0000000
--- a/wrapper/src/main/java/org/apache/karaf/wrapper/internal/Main.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.wrapper.internal;
-
-import org.apache.karaf.main.ShutdownCallback;
-import org.tanukisoftware.wrapper.WrapperListener;
-import org.tanukisoftware.wrapper.WrapperManager;
-
-/**
- * Java Service Wrapper Main class
- */
-public class Main extends Thread implements WrapperListener, ShutdownCallback {
-
- private org.apache.karaf.main.Main main;
- private volatile boolean destroying;
-
- /*---------------------------------------------------------------
- * Constructors
- *-------------------------------------------------------------*/
- private Main() {
- }
-
- /*---------------------------------------------------------------
- * WrapperListener Methods
- *-------------------------------------------------------------*/
-
- /**
- * The start method is called when the WrapperManager is signaled by the
- * native Wrapper code that it can start its application. This
- * method call is expected to return, so a new thread should be launched
- * if necessary.
- *
- * @param args List of arguments used to initialize the application.
- * @return Any error code if the application should exit on completion
- * of the start method. If there were no problems then this
- * method should return null.
- */
- public Integer start(String[] args) {
- main = new org.apache.karaf.main.Main(args);
- try {
- main.launch();
- main.setShutdownCallback(this);
- start();
- return null;
- } catch (Throwable ex) {
- System.err.println("Could not create framework: " + ex);
- ex.printStackTrace();
- return -1;
- }
- }
-
- public void run() {
- try {
- main.awaitShutdown();
- if (!destroying) {
- WrapperManager.stop(main.getExitCode());
- }
- } catch (Exception e) {
- // Ignore
- }
- }
-
- /**
- * Called when the application is shutting down. The Wrapper assumes that
- * this method will return fairly quickly. If the shutdown code code
- * could potentially take a long time, then WrapperManager.signalStopping()
- * should be called to extend the timeout period. If for some reason,
- * the stop method can not return, then it must call
- * WrapperManager.stopped() to avoid warning messages from the Wrapper.
- *
- * @param exitCode The suggested exit code that will be returned to the OS
- * when the JVM exits.
- * @return The exit code to actually return to the OS. In most cases, this
- * should just be the value of exitCode, however the user code has
- * the option of changing the exit code if there are any problems
- * during shutdown.
- */
- public int stop(int exitCode) {
- try {
- destroying = true;
- if (!main.destroy()) {
- System.err.println("Timeout waiting for Karaf to shutdown");
- return -3;
- }
- } catch (Throwable ex) {
- System.err.println("Error occured shutting down framework: " + ex);
- ex.printStackTrace();
- return -2;
- }
-
- return main.getExitCode();
- }
-
- /**
- * Call-back method is called by the @{link org.apache.karaf.main.Main} for Signaling
- * that the stopping process is in progress and the wrapper doesn't kill the JVM.
- */
- public void waitingForShutdown(int delay) {
- WrapperManager.signalStopping(delay);
- }
-
- /**
- * Called whenever the native Wrapper code traps a system control signal
- * against the Java process. It is up to the callback to take any actions
- * necessary. Possible values are: WrapperManager.WRAPPER_CTRL_C_EVENT,
- * WRAPPER_CTRL_CLOSE_EVENT, WRAPPER_CTRL_LOGOFF_EVENT, or
- * WRAPPER_CTRL_SHUTDOWN_EVENT
- *
- * @param event The system control signal.
- */
- public void controlEvent(int event) {
- if ((event == WrapperManager.WRAPPER_CTRL_LOGOFF_EVENT)
- && (WrapperManager.isLaunchedAsService())) {
- // Ignore
- } else {
- WrapperManager.stop(0);
- // Will not get here.
- }
- }
-
- /*---------------------------------------------------------------
- * Main Method
- *-------------------------------------------------------------*/
- public static void main(String[] args) {
- // Start the application. If the JVM was launched from the native
- // Wrapper then the application will wait for the native Wrapper to
- // call the application's start method. Otherwise the start method
- // will be called immediately.
- WrapperManager.start(new Main(), args);
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf/blob/6cc3b623/wrapper/src/main/java/org/apache/karaf/wrapper/internal/WrapperServiceImpl.java
----------------------------------------------------------------------
diff --git a/wrapper/src/main/java/org/apache/karaf/wrapper/internal/WrapperServiceImpl.java b/wrapper/src/main/java/org/apache/karaf/wrapper/internal/WrapperServiceImpl.java
index ddeb770..4a45c09 100644
--- a/wrapper/src/main/java/org/apache/karaf/wrapper/internal/WrapperServiceImpl.java
+++ b/wrapper/src/main/java/org/apache/karaf/wrapper/internal/WrapperServiceImpl.java
@@ -49,13 +49,13 @@ public class WrapperServiceImpl implements WrapperService {
File base = new File(System.getProperty("karaf.base"));
File etc = new File(System.getProperty("karaf.etc"));
File bin = new File(base, "bin");
- File lib = new File(base, "lib");
+ File lib = new File(base, "lib/wrapper");
if (name == null) {
name = base.getName();
}
- HashMap<String, String> props = new HashMap<String, String>();
+ HashMap<String, String> props = new HashMap<>();
props.put("${java.home}", System.getenv("JAVA_HOME"));
props.put("${karaf.home}", System.getProperty("karaf.home"));
props.put("${karaf.base}", base.getPath());
@@ -67,8 +67,8 @@ public class WrapperServiceImpl implements WrapperService {
props.put("${startType}", startType);
String os = System.getProperty("os.name", "Unknown");
- File serviceFile = null;
- File wrapperConf = null;
+ File serviceFile;
+ File wrapperConf;
if (os.startsWith("Win")) {
String arch = System.getProperty("os.arch");
if (arch.equalsIgnoreCase("amd64") || arch.equalsIgnoreCase("x86_64")) {
@@ -280,7 +280,7 @@ public class WrapperServiceImpl implements WrapperService {
copyResourceTo(new File(lib, "karaf-wrapper.jar"), "all/karaf-wrapper.jar", false);
mkdir(etc);
- createJar(new File(lib, "karaf-wrapper-main.jar"), "org/apache/karaf/wrapper/internal/Main.class");
+ createJar(new File(lib, "karaf-wrapper-main.jar"), "org/apache/karaf/wrapper/internal/service/Main.class");
File[] wrapperPaths = new File[2];
wrapperPaths[0] = wrapperConf;
@@ -325,7 +325,7 @@ public class WrapperServiceImpl implements WrapperService {
// binary resource so just write it out the way it came in
FileOutputStream out = new FileOutputStream(outFile);
try {
- int c = 0;
+ int c;
while ((c = is.read()) >= 0) {
out.write(c);
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/6cc3b623/wrapper/src/main/java/org/apache/karaf/wrapper/internal/service/Main.java
----------------------------------------------------------------------
diff --git a/wrapper/src/main/java/org/apache/karaf/wrapper/internal/service/Main.java b/wrapper/src/main/java/org/apache/karaf/wrapper/internal/service/Main.java
new file mode 100644
index 0000000..49e1fd6
--- /dev/null
+++ b/wrapper/src/main/java/org/apache/karaf/wrapper/internal/service/Main.java
@@ -0,0 +1,146 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.karaf.wrapper.internal.service;
+
+import org.apache.karaf.main.ShutdownCallback;
+import org.tanukisoftware.wrapper.WrapperListener;
+import org.tanukisoftware.wrapper.WrapperManager;
+
+/**
+ * Java Service Wrapper Main class
+ */
+public class Main extends Thread implements WrapperListener, ShutdownCallback {
+
+ private org.apache.karaf.main.Main main;
+ private volatile boolean destroying;
+
+ /*---------------------------------------------------------------
+ * Constructors
+ *-------------------------------------------------------------*/
+ private Main() {
+ }
+
+ /*---------------------------------------------------------------
+ * WrapperListener Methods
+ *-------------------------------------------------------------*/
+
+ /**
+ * The start method is called when the WrapperManager is signaled by the
+ * native Wrapper code that it can start its application. This
+ * method call is expected to return, so a new thread should be launched
+ * if necessary.
+ *
+ * @param args List of arguments used to initialize the application.
+ * @return Any error code if the application should exit on completion
+ * of the start method. If there were no problems then this
+ * method should return null.
+ */
+ public Integer start(String[] args) {
+ main = new org.apache.karaf.main.Main(args);
+ try {
+ main.launch();
+ main.setShutdownCallback(this);
+ start();
+ return null;
+ } catch (Throwable ex) {
+ System.err.println("Could not create framework: " + ex);
+ ex.printStackTrace();
+ return -1;
+ }
+ }
+
+ public void run() {
+ try {
+ main.awaitShutdown();
+ if (!destroying) {
+ WrapperManager.stop(main.getExitCode());
+ }
+ } catch (Exception e) {
+ // Ignore
+ }
+ }
+
+ /**
+ * Called when the application is shutting down. The Wrapper assumes that
+ * this method will return fairly quickly. If the shutdown code code
+ * could potentially take a long time, then WrapperManager.signalStopping()
+ * should be called to extend the timeout period. If for some reason,
+ * the stop method can not return, then it must call
+ * WrapperManager.stopped() to avoid warning messages from the Wrapper.
+ *
+ * @param exitCode The suggested exit code that will be returned to the OS
+ * when the JVM exits.
+ * @return The exit code to actually return to the OS. In most cases, this
+ * should just be the value of exitCode, however the user code has
+ * the option of changing the exit code if there are any problems
+ * during shutdown.
+ */
+ public int stop(int exitCode) {
+ try {
+ destroying = true;
+ if (!main.destroy()) {
+ System.err.println("Timeout waiting for Karaf to shutdown");
+ return -3;
+ }
+ } catch (Throwable ex) {
+ System.err.println("Error occured shutting down framework: " + ex);
+ ex.printStackTrace();
+ return -2;
+ }
+
+ return main.getExitCode();
+ }
+
+ /**
+ * Call-back method is called by the @{link org.apache.karaf.main.Main} for Signaling
+ * that the stopping process is in progress and the wrapper doesn't kill the JVM.
+ */
+ public void waitingForShutdown(int delay) {
+ WrapperManager.signalStopping(delay);
+ }
+
+ /**
+ * Called whenever the native Wrapper code traps a system control signal
+ * against the Java process. It is up to the callback to take any actions
+ * necessary. Possible values are: WrapperManager.WRAPPER_CTRL_C_EVENT,
+ * WRAPPER_CTRL_CLOSE_EVENT, WRAPPER_CTRL_LOGOFF_EVENT, or
+ * WRAPPER_CTRL_SHUTDOWN_EVENT
+ *
+ * @param event The system control signal.
+ */
+ public void controlEvent(int event) {
+ if ((event == WrapperManager.WRAPPER_CTRL_LOGOFF_EVENT)
+ && (WrapperManager.isLaunchedAsService())) {
+ // Ignore
+ } else {
+ WrapperManager.stop(0);
+ // Will not get here.
+ }
+ }
+
+ /*---------------------------------------------------------------
+ * Main Method
+ *-------------------------------------------------------------*/
+ public static void main(String[] args) {
+ // Start the application. If the JVM was launched from the native
+ // Wrapper then the application will wait for the native Wrapper to
+ // call the application's start method. Otherwise the start method
+ // will be called immediately.
+ WrapperManager.start(new Main(), args);
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf/blob/6cc3b623/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/unix/karaf-wrapper.conf
----------------------------------------------------------------------
diff --git a/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/unix/karaf-wrapper.conf b/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/unix/karaf-wrapper.conf
index a3f98a5..460e543 100644
--- a/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/unix/karaf-wrapper.conf
+++ b/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/unix/karaf-wrapper.conf
@@ -27,14 +27,10 @@ set.default.KARAF_ETC=${karaf.etc}
# Java Application
wrapper.working.dir=%KARAF_BASE%
wrapper.java.command=%JAVA_HOME%/bin/java
-wrapper.java.mainclass=org.apache.karaf.wrapper.internal.Main
-wrapper.java.classpath.1=%KARAF_HOME%/lib/karaf-wrapper.jar
-wrapper.java.classpath.2=%KARAF_HOME%/lib/karaf.jar
-wrapper.java.classpath.3=%KARAF_HOME%/lib/karaf-jmx-boot.jar
-wrapper.java.classpath.4=%KARAF_HOME%/lib/karaf-jaas-boot.jar
-wrapper.java.classpath.5=%KARAF_HOME%/lib/karaf-wrapper-main.jar
-wrapper.java.classpath.6=%KARAF_HOME%/lib/karaf-org.osgi.core.jar
-wrapper.java.library.path.1=%KARAF_HOME%/lib/
+wrapper.java.mainclass=org.apache.karaf.wrapper.internal.service.Main
+wrapper.java.classpath.1=%KARAF_HOME%/lib/boot/*.jar
+wrapper.java.classpath.2=%KARAF_HOME%/lib/wrapper/*.jar
+wrapper.java.library.path.1=%KARAF_HOME%/lib/wrapper/
# Application Parameters. Add parameters as needed starting from 1
#wrapper.app.parameter.1=
http://git-wip-us.apache.org/repos/asf/karaf/blob/6cc3b623/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows/karaf-wrapper.conf
----------------------------------------------------------------------
diff --git a/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows/karaf-wrapper.conf b/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows/karaf-wrapper.conf
index def40f7..e7581d9 100644
--- a/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows/karaf-wrapper.conf
+++ b/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows/karaf-wrapper.conf
@@ -27,14 +27,10 @@ set.default.KARAF_ETC=${karaf.etc}
# Java Application
wrapper.working.dir=%KARAF_BASE%
wrapper.java.command=%JAVA_HOME%/bin/java
-wrapper.java.mainclass=org.apache.karaf.wrapper.internal.Main
-wrapper.java.classpath.1=%KARAF_HOME%/lib/karaf-wrapper.jar
-wrapper.java.classpath.2=%KARAF_HOME%/lib/karaf.jar
-wrapper.java.classpath.3=%KARAF_HOME%/lib/karaf-jmx-boot.jar
-wrapper.java.classpath.4=%KARAF_HOME%/lib/karaf-jaas-boot.jar
-wrapper.java.classpath.5=%KARAF_HOME%/lib/karaf-wrapper-main.jar
-wrapper.java.classpath.6=%KARAF_HOME%/lib/karaf-org.osgi.core.jar
-wrapper.java.library.path.1=%KARAF_HOME%/lib/
+wrapper.java.mainclass=org.apache.karaf.wrapper.internal.service.Main
+wrapper.java.classpath.1=%KARAF_HOME%/lib/boot/*.jar
+wrapper.java.classpath.2=%KARAF_HOME%/lib/wrapper/*.jar
+wrapper.java.library.path.1=%KARAF_HOME%/lib/wrapper/
# Application Parameters. Add parameters as needed starting from 1
#wrapper.app.parameter.1=
http://git-wip-us.apache.org/repos/asf/karaf/blob/6cc3b623/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows64/karaf-wrapper.conf
----------------------------------------------------------------------
diff --git a/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows64/karaf-wrapper.conf b/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows64/karaf-wrapper.conf
index def40f7..e7581d9 100644
--- a/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows64/karaf-wrapper.conf
+++ b/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows64/karaf-wrapper.conf
@@ -27,14 +27,10 @@ set.default.KARAF_ETC=${karaf.etc}
# Java Application
wrapper.working.dir=%KARAF_BASE%
wrapper.java.command=%JAVA_HOME%/bin/java
-wrapper.java.mainclass=org.apache.karaf.wrapper.internal.Main
-wrapper.java.classpath.1=%KARAF_HOME%/lib/karaf-wrapper.jar
-wrapper.java.classpath.2=%KARAF_HOME%/lib/karaf.jar
-wrapper.java.classpath.3=%KARAF_HOME%/lib/karaf-jmx-boot.jar
-wrapper.java.classpath.4=%KARAF_HOME%/lib/karaf-jaas-boot.jar
-wrapper.java.classpath.5=%KARAF_HOME%/lib/karaf-wrapper-main.jar
-wrapper.java.classpath.6=%KARAF_HOME%/lib/karaf-org.osgi.core.jar
-wrapper.java.library.path.1=%KARAF_HOME%/lib/
+wrapper.java.mainclass=org.apache.karaf.wrapper.internal.service.Main
+wrapper.java.classpath.1=%KARAF_HOME%/lib/boot/*.jar
+wrapper.java.classpath.2=%KARAF_HOME%/lib/wrapper/*.jar
+wrapper.java.library.path.1=%KARAF_HOME%/lib/wrapper/
# Application Parameters. Add parameters as needed starting from 1
#wrapper.app.parameter.1=