diff --git a/deploy/scripts/run-server.bat b/deploy/scripts/run-server.bat index 04c377b33e..18844350eb 100644 --- a/deploy/scripts/run-server.bat +++ b/deploy/scripts/run-server.bat @@ -1,8 +1,7 @@ @rem echo off for /f %%a in ('dir /B /S server\plugins\org.eclipse.equinox.launcher*.jar') do SET launcherJar="%%a" -SET workspacePath=workspace echo "Starting Cloudbeaver Server" -java -jar %launcherJar% -product io.cloudbeaver.server.product -data %workspacePath% -web-config conf/cloudbeaver.conf -nl en -registryMultiLanguage -vmargs -Xmx2048M +java -jar %launcherJar% -product io.cloudbeaver.server.product -web-config conf/cloudbeaver.conf -nl en -registryMultiLanguage -vmargs -Xmx2048M diff --git a/deploy/scripts/run-server.sh b/deploy/scripts/run-server.sh index aa7e3f42df..00e22b62aa 100755 --- a/deploy/scripts/run-server.sh +++ b/deploy/scripts/run-server.sh @@ -1,8 +1,8 @@ #!/bin/bash cd server launcherJar=( plugins/org.eclipse.equinox.launcher*.jar ) -workspacePath=./../workspace echo "Starting Cloudbeaver Server" +export CLOUDBEAVER_HOME=$(pwd) -java -jar ${launcherJar} -product io.cloudbeaver.server.product -data ${workspacePath} -web-config ./../conf/cloudbeaver.conf -nl en -registryMultiLanguage -vmargs -Xmx2048M +java -jar ${launcherJar} -product io.cloudbeaver.server.product -web-config ./../conf/cloudbeaver.conf -nl en -registryMultiLanguage -vmargs -Xmx2048M diff --git a/samples/sample-databases/cloudbeaver-sample.conf b/samples/sample-databases/cloudbeaver-sample.conf index 8a3f008423..22e77caac6 100644 --- a/samples/sample-databases/cloudbeaver-sample.conf +++ b/samples/sample-databases/cloudbeaver-sample.conf @@ -1,6 +1,8 @@ ServerPort = 8978 ServerName = Cloudbeaver Sample Server +WorkspaceLocation = workspace ContentRoot = web +DriversLocation = drivers DevelMode = false diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CloudbeaverApplication.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CloudbeaverApplication.java index ebd56712f6..86b6e15632 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CloudbeaverApplication.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CloudbeaverApplication.java @@ -145,7 +145,8 @@ public class CloudbeaverApplication extends BaseApplicationImpl { DBPApplication application = DBWorkbench.getPlatform().getApplication(); - log.debug("\tContent root: " + contentRoot); + log.debug("\tContent root: " + new File(contentRoot).getAbsolutePath()); + log.debug("\tDrivers storage: " + new File(driversLocation).getAbsolutePath()); //log.debug("\tDrivers root: " + driversLocation); log.debug("\tProduct details: " + application.getInfoDetails()); log.debug("\tBase port: " + serverPort); @@ -183,19 +184,34 @@ public class CloudbeaverApplication extends BaseApplicationImpl { } private void parseConfiguration(Properties props) { + String homeFolder = System.getenv(CloudbeaverConstants.ENV_CB_HOME); + if (CommonUtils.isEmpty(homeFolder)) { + homeFolder = System.getProperty("user.dir"); + } + if (CommonUtils.isEmpty(homeFolder)) { + homeFolder = "."; + } + serverPort = CommonUtils.toInt(getConfigParameter(props, CloudbeaverConstants.PARAM_SERVER_PORT, String.valueOf(CloudbeaverConstants.DEFAULT_SERVER_PORT))); serverName = getConfigParameter(props, CloudbeaverConstants.PARAM_SERVER_NAME, CloudbeaverConstants.DEFAULT_SERVER_NAME); - contentRoot = getConfigParameter(props, CloudbeaverConstants.PARAM_CONTENT_ROOT, CloudbeaverConstants.DEFAULT_CONTENT_ROOT); + contentRoot = this.getRelativePath(getConfigParameter(props, CloudbeaverConstants.PARAM_CONTENT_ROOT, CloudbeaverConstants.DEFAULT_CONTENT_ROOT), homeFolder); rootURI = getConfigParameter(props, CloudbeaverConstants.PARAM_ROOT_URI, CloudbeaverConstants.DEFAULT_ROOT_URI); servicesURI = getConfigParameter(props, CloudbeaverConstants.PARAM_SERVICES_URI, CloudbeaverConstants.DEFAULT_SERVICES_URI); - driversLocation = getConfigParameter(props, CloudbeaverConstants.PARAM_DRIVERS_LOCATION, CloudbeaverConstants.DEFAULT_DRIVERS_LOCATION); - workspaceLocation = getConfigParameter(props, CloudbeaverConstants.PARAM_WORKSPACE_LOCATION, CloudbeaverConstants.DEFAULT_WORKSPACE_LOCATION); + driversLocation = this.getRelativePath(getConfigParameter(props, CloudbeaverConstants.PARAM_DRIVERS_LOCATION, CloudbeaverConstants.DEFAULT_DRIVERS_LOCATION), homeFolder); + workspaceLocation = this.getRelativePath(getConfigParameter(props, CloudbeaverConstants.PARAM_WORKSPACE_LOCATION, CloudbeaverConstants.DEFAULT_WORKSPACE_LOCATION), homeFolder); maxSessionIdleTime = getConfigParameter(props, CloudbeaverConstants.PARAM_SESSION_EXPIRE_PERIOD, CloudbeaverConstants.MAX_SESSION_IDLE_TIME); develMode = CommonUtils.toBoolean(getConfigParameter(props, CloudbeaverConstants.PARAM_DEVEL_MODE, "false")); } + private String getRelativePath(String path, String curDir) { + if (path.startsWith("/") || path.length() > 2 && path.charAt(1) == ':') { + return path; + } + return new File(curDir, path).getAbsolutePath(); + } + @NotNull private String getConfigParameter(@NotNull Properties props, @NotNull String paramName, @NotNull String defValue) { String property = props.getProperty(paramName); diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CloudbeaverConstants.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CloudbeaverConstants.java index 133e8f9bf7..f80ed9c08b 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CloudbeaverConstants.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CloudbeaverConstants.java @@ -57,4 +57,5 @@ public class CloudbeaverConstants { // Default max idle time (10 minutes) public static final long MAX_SESSION_IDLE_TIME = 10 * 60 * 1000; + public static final String ENV_CB_HOME = "CLOUDBEAVER_HOME"; }