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);
}
}