diff --git a/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java b/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
index 66a643c..6cdf52e 100644
--- a/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
+++ b/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
@@ -70,6 +70,8 @@ public class KeycloakApplication extends Application {
private static final ServicesLogger logger = ServicesLogger.ROOT_LOGGER;
+ protected boolean embedded = false;
+
protected Set<Object> singletons = new HashSet<Object>();
protected Set<Class<?>> classes = new HashSet<Class<?>>();
@@ -78,6 +80,10 @@ public class KeycloakApplication extends Application {
public KeycloakApplication(@Context ServletContext context, @Context Dispatcher dispatcher) {
try {
+ if ("true".equals(context.getInitParameter("keycloak.embedded"))) {
+ embedded = true;
+ }
+
loadConfig(context);
this.contextPath = context.getContextPath();
@@ -139,7 +145,9 @@ public class KeycloakApplication extends Application {
setupScheduledTasks(sessionFactory);
} catch (Throwable t) {
- exit(1);
+ if (!embedded) {
+ exit(1);
+ }
throw t;
}
}
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/KeycloakServer.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/KeycloakServer.java
index 3b8d68b..8806514 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/KeycloakServer.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/KeycloakServer.java
@@ -309,6 +309,8 @@ public class KeycloakServer {
di.setDeploymentName("Keycloak");
di.setDefaultEncoding("UTF-8");
+ di.addInitParameter("keycloak.embedded", "true");
+
di.setDefaultServletConfig(new DefaultServletConfig(true));
ServletInfo restEasyDispatcher = Servlets.servlet("Keycloak REST Interface", HttpServlet30Dispatcher.class);