Author: markt Date: Mon Nov 6 22:57:20 2017 New Revision: 1814445 URL: http://svn.apache.org/viewvc?rev=1814445&view=rev Log: Java 9 support Add a new command line option "Jvm9Options" and store the value provided in the registry. This parameter is currently unused. Plumbing it in to the service is the next step.
Modified: commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c Modified: commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c?rev=1814445&r1=1814444&r2=1814445&view=diff ============================================================================== --- commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c (original) +++ commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c Mon Nov 6 22:57:20 2017 @@ -117,34 +117,35 @@ static APXCMDLINEOPT _options[] = { /* 12 */ { L"JavaHome", L"JavaHome", L"Java", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, /* 13 */ { L"Jvm", L"Jvm", L"Java", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, /* 14 */ { L"JvmOptions", L"Options", L"Java", APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, -/* 15 */ { L"Classpath", L"Classpath", L"Java", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 16 */ { L"JvmMs", L"JvmMs", L"Java", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, -/* 17 */ { L"JvmMx", L"JvmMx", L"Java", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, +/* 15 */ { L"Jvm9Options", L"Options9", L"Java", APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0 }, +/* 16 */ { L"Classpath", L"Classpath", L"Java", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 17 */ { L"JvmMs", L"JvmMs", L"Java", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, +/* 18 */ { L"JvmMx", L"JvmMx", L"Java", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, /* 19 */ { L"JvmSs", L"JvmSs", L"Java", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, -/* 19 */ { L"StopImage", L"Image", L"Stop", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 20 */ { L"StopPath", L"WorkingPath", L"Stop", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 21 */ { L"StopClass", L"Class", L"Stop", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 22 */ { L"StopParams", L"Params", L"Stop", APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, -/* 23 */ { L"StopMethod", L"Method", L"Stop", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 24 */ { L"StopMode", L"Mode", L"Stop", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 25 */ { L"StopTimeout", L"Timeout", L"Stop", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, - -/* 26 */ { L"StartImage", L"Image", L"Start", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 27 */ { L"StartPath", L"WorkingPath", L"Start", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 28 */ { L"StartClass", L"Class", L"Start", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 29 */ { L"StartParams", L"Params", L"Start", APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, -/* 30 */ { L"StartMethod", L"Method", L"Start", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 31 */ { L"StartMode", L"Mode", L"Start", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, - -/* 32 */ { L"LogPath", L"Path", L"Log", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 33 */ { L"LogPrefix", L"Prefix", L"Log", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 34 */ { L"LogLevel", L"Level", L"Log", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 35 */ { L"StdError", L"StdError", L"Log", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 36 */ { L"StdOutput", L"StdOutput", L"Log", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 37 */ { L"LogJniMessages", L"LogJniMessages", L"Log", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 1}, -/* 38 */ { L"PidFile", L"PidFile", L"Log", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 39 */ { L"Rotate", L"Rotate", L"Log", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, +/* 20 */ { L"StopImage", L"Image", L"Stop", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 21 */ { L"StopPath", L"WorkingPath", L"Stop", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 22 */ { L"StopClass", L"Class", L"Stop", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 23 */ { L"StopParams", L"Params", L"Stop", APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, +/* 24 */ { L"StopMethod", L"Method", L"Stop", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 25 */ { L"StopMode", L"Mode", L"Stop", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 26 */ { L"StopTimeout", L"Timeout", L"Stop", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, + +/* 27 */ { L"StartImage", L"Image", L"Start", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 28 */ { L"StartPath", L"WorkingPath", L"Start", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 29 */ { L"StartClass", L"Class", L"Start", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 30 */ { L"StartParams", L"Params", L"Start", APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, +/* 31 */ { L"StartMethod", L"Method", L"Start", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 32 */ { L"StartMode", L"Mode", L"Start", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, + +/* 33 */ { L"LogPath", L"Path", L"Log", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 34 */ { L"LogPrefix", L"Prefix", L"Log", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 35 */ { L"LogLevel", L"Level", L"Log", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 36 */ { L"StdError", L"StdError", L"Log", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 37 */ { L"StdOutput", L"StdOutput", L"Log", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 38 */ { L"LogJniMessages", L"LogJniMessages", L"Log", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 1}, +/* 39 */ { L"PidFile", L"PidFile", L"Log", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 40 */ { L"Rotate", L"Rotate", L"Log", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, /* NULL terminate the array */ { NULL } }; @@ -179,35 +180,36 @@ static APXCMDLINEOPT _options[] = { #define SO_JAVAHOME GET_OPT_V(12) #define SO_JVM GET_OPT_V(13) #define SO_JVMOPTIONS GET_OPT_V(14) -#define SO_CLASSPATH GET_OPT_V(15) -#define SO_JVMMS GET_OPT_I(16) -#define SO_JVMMX GET_OPT_I(17) -#define SO_JVMSS GET_OPT_I(18) - -#define SO_STOPIMAGE GET_OPT_V(19) -#define SO_STOPPATH GET_OPT_V(20) -#define SO_STOPCLASS GET_OPT_V(21) -#define SO_STOPPARAMS GET_OPT_V(22) -#define SO_STOPMETHOD GET_OPT_V(23) -#define SO_STOPMODE GET_OPT_V(24) -#define SO_STOPTIMEOUT GET_OPT_I(25) - -#define SO_STARTIMAGE GET_OPT_V(26) -#define SO_STARTPATH GET_OPT_V(27) -#define SO_STARTCLASS GET_OPT_V(28) -#define SO_STARTPARAMS GET_OPT_V(29) -#define SO_STARTMETHOD GET_OPT_V(30) -#define SO_STARTMODE GET_OPT_V(31) - -#define SO_LOGPATH GET_OPT_V(32) -#define SO_LOGPREFIX GET_OPT_V(33) -#define SO_LOGLEVEL GET_OPT_V(34) - -#define SO_STDERROR GET_OPT_V(35) -#define SO_STDOUTPUT GET_OPT_V(36) -#define SO_JNIVFPRINTF GET_OPT_I(37) -#define SO_PIDFILE GET_OPT_V(38) -#define SO_LOGROTATE GET_OPT_I(39) +#define SO_JVM9OPTIONS GET_OPT_V(15) +#define SO_CLASSPATH GET_OPT_V(16) +#define SO_JVMMS GET_OPT_I(17) +#define SO_JVMMX GET_OPT_I(18) +#define SO_JVMSS GET_OPT_I(19) + +#define SO_STOPIMAGE GET_OPT_V(20) +#define SO_STOPPATH GET_OPT_V(21) +#define SO_STOPCLASS GET_OPT_V(22) +#define SO_STOPPARAMS GET_OPT_V(23) +#define SO_STOPMETHOD GET_OPT_V(24) +#define SO_STOPMODE GET_OPT_V(25) +#define SO_STOPTIMEOUT GET_OPT_I(26) + +#define SO_STARTIMAGE GET_OPT_V(27) +#define SO_STARTPATH GET_OPT_V(28) +#define SO_STARTCLASS GET_OPT_V(29) +#define SO_STARTPARAMS GET_OPT_V(30) +#define SO_STARTMETHOD GET_OPT_V(31) +#define SO_STARTMODE GET_OPT_V(32) + +#define SO_LOGPATH GET_OPT_V(33) +#define SO_LOGPREFIX GET_OPT_V(34) +#define SO_LOGLEVEL GET_OPT_V(35) + +#define SO_STDERROR GET_OPT_V(36) +#define SO_STDOUTPUT GET_OPT_V(37) +#define SO_JNIVFPRINTF GET_OPT_I(38) +#define SO_PIDFILE GET_OPT_V(39) +#define SO_LOGROTATE GET_OPT_I(40) static SERVICE_STATUS _service_status; static SERVICE_STATUS_HANDLE _service_status_handle = NULL; @@ -229,7 +231,8 @@ static int gExitval; static LPWSTR gStartPath; static LPWSTR _jni_jvmpath = NULL; /* Path to jvm dll */ -static LPSTR _jni_jvmoptions = NULL; /* Path to jvm options */ +static LPSTR _jni_jvmoptions = NULL; /* jvm options */ +static LPSTR _jni_jvm9options = NULL; /* java 9+ options */ static LPSTR _jni_classpath = NULL; static LPCWSTR _jni_rparam = NULL; /* Startup arguments */ @@ -1501,6 +1504,7 @@ void WINAPI serviceMain(DWORD argc, LPTS if (IS_VALID_STRING(SO_STOPMETHOD)) _jni_smethod = WideToANSI(SO_STOPMETHOD); _jni_jvmoptions = MzWideToANSI(SO_JVMOPTIONS); + _jni_jvm9options = MzWideToANSI(SO_JVM9OPTIONS); } if (_service_mode) { /* Register Service Control handler */