You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ma...@apache.org on 2017/11/07 10:56:22 UTC
svn commit: r1814480 - in /commons/proper/daemon/trunk/src/native/windows:
apps/prunsrv/prunsrv.c include/javajni.h src/javajni.c
Author: markt
Date: Tue Nov 7 10:56:22 2017
New Revision: 1814480
URL: http://svn.apache.org/viewvc?rev=1814480&view=rev
Log:
Rename Java 9 options related variables for consistency.
When starting the service under Java 9 in jvm mode, ensure that the Java 9 options are added to the standard Java options when creating the JVM instance
Modified:
commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c
commons/proper/daemon/trunk/src/native/windows/include/javajni.h
commons/proper/daemon/trunk/src/native/windows/src/javajni.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=1814480&r1=1814479&r2=1814480&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 Tue Nov 7 10:56:22 2017
@@ -117,7 +117,7 @@ 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"Jvm9Options", L"Options9", L"Java", APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0 },
+/* 15 */ { L"JvmOptions9", 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},
@@ -180,7 +180,7 @@ 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_JVM9OPTIONS GET_OPT_V(15)
+#define SO_JVMOPTIONS9 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)
@@ -232,7 +232,7 @@ static LPWSTR gStartPath;
static LPWSTR _jni_jvmpath = NULL; /* Path to jvm dll */
static LPSTR _jni_jvmoptions = NULL; /* jvm options */
-static LPSTR _jni_jvm9options = NULL; /* java 9+ options */
+static LPSTR _jni_jvmoptions9 = NULL; /* java 9+ options */
static LPSTR _jni_classpath = NULL;
static LPCWSTR _jni_rparam = NULL; /* Startup arguments */
@@ -964,6 +964,7 @@ static DWORD WINAPI serviceStop(LPVOID l
gSargs.hJava = hWorker;
gSargs.szClassPath = _jni_classpath;
gSargs.lpOptions = _jni_jvmoptions;
+ gSargs.lpOptions9 = _jni_jvmoptions9;
gSargs.dwMs = SO_JVMMS;
gSargs.dwMx = SO_JVMMX;
gSargs.dwSs = SO_JVMSS;
@@ -1174,6 +1175,7 @@ static DWORD serviceStart()
gRargs.hJava = gWorker;
gRargs.szClassPath = _jni_classpath;
gRargs.lpOptions = _jni_jvmoptions;
+ gRargs.lpOptions9 = _jni_jvmoptions9;
gRargs.dwMs = SO_JVMMS;
gRargs.dwMx = SO_JVMMX;
gRargs.dwSs = SO_JVMSS;
@@ -1504,7 +1506,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);
+ _jni_jvmoptions9 = MzWideToANSI(SO_JVMOPTIONS9);
}
if (_service_mode) {
/* Register Service Control handler */
Modified: commons/proper/daemon/trunk/src/native/windows/include/javajni.h
URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/windows/include/javajni.h?rev=1814480&r1=1814479&r2=1814480&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/native/windows/include/javajni.h (original)
+++ commons/proper/daemon/trunk/src/native/windows/include/javajni.h Tue Nov 7 10:56:22 2017
@@ -26,6 +26,7 @@ typedef struct stAPXJAVA_THREADARGS
LPVOID hJava;
LPCSTR szClassPath;
LPCVOID lpOptions;
+ LPCVOID lpOptions9;
DWORD dwMs;
DWORD dwMx;
DWORD dwSs;
@@ -42,8 +43,9 @@ typedef struct stAPXJAVA_THREADARGS
APXHANDLE apxCreateJava(APXHANDLE hPool, LPCWSTR szJvmDllPath);
BOOL apxJavaInitialize(APXHANDLE hJava, LPCSTR szClassPath,
- LPCVOID lpOptions, DWORD dwMs, DWORD dwMx,
- DWORD dwSs, DWORD bJniVfprintf);
+ LPCVOID lpOptions, LPCVOID lpOptions9,
+ DWORD dwMs, DWORD dwMx, DWORD dwSs,
+ DWORD bJniVfprintf);
DWORD
apxJavaCmdInitialize(APXHANDLE hPool, LPCWSTR szClassPath, LPCWSTR szClass,
LPCWSTR szOptions, DWORD dwMs, DWORD dwMx,
Modified: commons/proper/daemon/trunk/src/native/windows/src/javajni.c
URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/windows/src/javajni.c?rev=1814480&r1=1814479&r2=1814480&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/native/windows/src/javajni.c (original)
+++ commons/proper/daemon/trunk/src/native/windows/src/javajni.c Tue Nov 7 10:56:22 2017
@@ -427,26 +427,56 @@ apxDestroyJvm(DWORD dwTimeout)
return FALSE;
}
+static BOOL __apxIsJava9()
+{
+ JavaVMInitArgs vmArgs;
+ vmArgs.version = JNI_VERSION_9;
+ /* Returns an error if requested version is not supported */
+ if (DYNLOAD_FPTR(JNI_GetDefaultJavaVMInitArgs)(&vmArgs) != JNI_OK) {
+ return FALSE;
+ }
+ else {
+ return TRUE;
+ }
+}
+
static DWORD __apxMultiSzToJvmOptions(APXHANDLE hPool,
LPCSTR lpString,
+ LPCSTR lpString9,
JavaVMOption **lppArray,
DWORD nExtra)
{
- DWORD i, n = 0, l = 0;
+ DWORD i, n = 0, n9 = 0, nTotal, l = 0, l9 = 0, lTotal;
char *buff;
LPSTR p;
if (lpString) {
l = __apxGetMultiSzLengthA(lpString, &n);
}
- n += nExtra;
- buff = apxPoolAlloc(hPool, (n + 1) * sizeof(JavaVMOption) + (l + 1));
+ if (__apxIsJava9() && lpString9) {
+ l9 = __apxGetMultiSzLengthA(lpString9, &n9);
+ }
+
+ nTotal = n + n9 + nExtra;
+ lTotal = l + l9;
+
+ buff = apxPoolAlloc(hPool, (nTotal + 1) * sizeof(JavaVMOption) + (lTotal + 1));
*lppArray = (JavaVMOption *)buff;
- p = (LPSTR)(buff + (n + 1) * sizeof(JavaVMOption));
+ p = (LPSTR)(buff + (nTotal + 1) * sizeof(JavaVMOption));
if (lpString)
AplCopyMemory(p, lpString, l + 1);
- for (i = 0; i < (n - nExtra); i++) {
+ for (i = 0; i < n; i++) {
+ DWORD qr = apxStrUnQuoteInplaceA(p);
+ (*lppArray)[i].optionString = p;
+ while (*p)
+ p++;
+ p++;
+ p += qr;
+ }
+ if (lpString9)
+ AplCopyMemory(p, lpString9, l9 + 1);
+ for (i = n; i < (n + n9); i++) {
DWORD qr = apxStrUnQuoteInplaceA(p);
(*lppArray)[i].optionString = p;
while (*p)
@@ -455,7 +485,7 @@ static DWORD __apxMultiSzToJvmOptions(AP
p += qr;
}
- return n;
+ return nTotal;
}
/* a hook for a function that redirects all VM messages. */
@@ -620,25 +650,12 @@ static LPSTR __apxEvalClasspath(APXHANDL
return pCpy;
}
-BOOL
-__apxIsJavaNine()
-{
- JavaVMInitArgs vmArgs;
- vmArgs.version = JNI_VERSION_9;
- /* Returns an error if requested version is not supported */
- if (DYNLOAD_FPTR(JNI_GetDefaultJavaVMInitArgs)(&vmArgs) != JNI_OK) {
- return FALSE;
- }
- else {
- return TRUE;
- }
-}
-
/* ANSI version only */
BOOL
apxJavaInitialize(APXHANDLE hJava, LPCSTR szClassPath,
- LPCVOID lpOptions, DWORD dwMs, DWORD dwMx,
- DWORD dwSs, DWORD bJniVfprintf)
+ LPCVOID lpOptions, LPCVOID lpOptions9,
+ DWORD dwMs, DWORD dwMx, DWORD dwSs,
+ DWORD bJniVfprintf)
{
LPAPXJAVAVM lpJava;
JavaVMInitArgs vmArgs;
@@ -686,14 +703,10 @@ apxJavaInitialize(APXHANDLE hJava, LPCST
if (szClassPath && *szClassPath)
++sOptions;
- if (__apxIsJavaNine()) {
- apxLogWrite(APXLOG_MARK_ERROR "TODO: Merge additional Java 9 JVM options");
- }
-
sOptions++; /* unconditionally set for extraInfo exit */
sOptions++; /* unconditionally set for extraInfo abort */
- nOptions = __apxMultiSzToJvmOptions(hJava->hPool, lpOptions,
+ nOptions = __apxMultiSzToJvmOptions(hJava->hPool, lpOptions, lpOptions9,
&lpJvmOptions, sOptions);
if (szClassPath && *szClassPath) {
szCp = __apxEvalClasspath(hJava->hPool, szClassPath);
@@ -949,7 +962,7 @@ static DWORD WINAPI __apxJavaWorkerThrea
WORKER_EXIT(1);
if (!apxJavaInitialize(pArgs->hJava,
pArgs->szClassPath,
- pArgs->lpOptions,
+ pArgs->lpOptions, pArgs->lpOptions9,
pArgs->dwMs, pArgs->dwMx, pArgs->dwSs,
pArgs->bJniVfprintf)) {
WORKER_EXIT(2);