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=