You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2017/08/03 14:35:24 UTC

[12/15] karaf git commit: [KARAF-5286] Create key in background

[KARAF-5286] Create key in background


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/3b7aef86
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/3b7aef86
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/3b7aef86

Branch: refs/heads/OPENSSH
Commit: 3b7aef86299767db3e2610688321af5b46800772
Parents: 0c76347
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Thu Aug 3 13:52:51 2017 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Thu Aug 3 15:53:23 2017 +0200

----------------------------------------------------------------------
 .../org/apache/karaf/shell/ssh/Activator.java   | 28 +++++++++++++-------
 1 file changed, 18 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/3b7aef86/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java
----------------------------------------------------------------------
diff --git a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java
index fd5458a..1006af7 100644
--- a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java
+++ b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/Activator.java
@@ -24,6 +24,8 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.security.KeyPair;
 import java.util.Collections;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 import org.apache.karaf.shell.api.action.lifecycle.Manager;
 import org.apache.karaf.shell.api.console.CommandLoggingFilter;
@@ -63,6 +65,7 @@ public class Activator extends BaseActivator implements ManagedService {
     ServiceTracker<Session, Session> sessionTracker;
     SessionFactory sessionFactory;
     SshServer server;
+    ExecutorService executor = Executors.newSingleThreadExecutor();
 
     @Override
     protected void doOpen() throws Exception {
@@ -110,16 +113,21 @@ public class Activator extends BaseActivator implements ManagedService {
         sessionFactory = sf;
         sessionFactory.getRegistry().getService(Manager.class).register(SshAction.class);
         if (Boolean.parseBoolean(bundleContext.getProperty("karaf.startRemoteShell"))) {
-            server = createSshServer(sessionFactory);
-            this.bundleContext.registerService(SshServer.class, server, null);
-            if (server == null) {
-                return; // can result from bad specification.
-            }
-            try {
-                server.start();
-            } catch (IOException e) {
-                LOGGER.warn("Exception caught while starting SSH server", e);
-            }
+            // Start server in background as key generation might take some time
+            executor.submit(() -> createAndRunSshServer());
+        }
+    }
+
+    private void createAndRunSshServer() {
+        server = createSshServer(sessionFactory);
+        this.bundleContext.registerService(SshServer.class, server, null);
+        if (server == null) {
+            return; // can result from bad specification.
+        }
+        try {
+            server.start();
+        } catch (IOException e) {
+            LOGGER.warn("Exception caught while starting SSH server", e);
         }
     }