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