added option to pass system jars in call to CreateJavaVM; fixed broken nxshell; no...
authorVictor Kirhenshtein <victor@netxms.org>
Fri, 15 Sep 2017 19:04:46 +0000 (22:04 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Fri, 15 Sep 2017 19:04:46 +0000 (22:04 +0300)
include/nxjava.h
src/agent/subagents/java/main.cpp
src/client/nxshell/java/src/main/java/org/netxms/Shell.java
src/client/nxshell/nxshell.cpp
src/libnxjava/jvm.cpp

index 618ddf2..22d7e4a 100644 (file)
@@ -118,12 +118,13 @@ TCHAR LIBNXJAVA_EXPORTABLE *FindJavaRuntime(TCHAR *buffer, size_t size);
  *
  * @param jvmPath path to JVM library
  * @param jar application JAR - path should be relative to NetXMS library directory (can be NULL)
+ * @param syslibs list of system jar files (should be terminated with NULL pointer, can be NULL)
  * @param usercp user defined class path (can be NULL)
  * @param vmOptions additional VM options
  * @param env points where JNI environment for current thread will be stored
  * @return NXJAVA_SUCCESS if VM created successfully or appropriate error code
  */
-JavaBridgeError LIBNXJAVA_EXPORTABLE CreateJavaVM(const TCHAR *jvmPath, const TCHAR *jar, const TCHAR *usercp, StringList *vmOptions, JNIEnv **env);
+JavaBridgeError LIBNXJAVA_EXPORTABLE CreateJavaVM(const TCHAR *jvmPath, const TCHAR *jar, const TCHAR **syslibs, const TCHAR *usercp, StringList *vmOptions, JNIEnv **env);
 
 /**
  * Destroy Java virtual machine
index b26849b..ce34167 100644 (file)
@@ -281,7 +281,7 @@ DECLARE_SUBAGENT_ENTRY_POINT(JAVA)
    nxlog_debug(1, _T("JAVA: using JVM %s"), s_jvmPath);
 
    JNIEnv *env;
-   JavaBridgeError err = CreateJavaVM(s_jvmPath, _T("netxms-agent.jar"), s_userClasspath, NULL, &env);
+   JavaBridgeError err = CreateJavaVM(s_jvmPath, _T("netxms-agent.jar"), NULL, s_userClasspath, NULL, &env);
    if (err != NXJAVA_SUCCESS)
    {
       AgentWriteLog(NXLOG_ERROR, _T("JAVA: Unable to load JVM: %s"), GetJavaBridgeErrorMessage(err));
index 7a19747..03dbb3b 100644 (file)
@@ -20,7 +20,6 @@ public class Shell
 {
    private static final String DEFAULT_SERVER = "127.0.0.1";
    private static final String DEFAULT_LOGIN = "admin";
-   private static final String DEFAULT_PASSWORD = "netxms";
    
    private String optServer;
    private String optPort;
@@ -101,10 +100,10 @@ public class Shell
          }
          if (optPassword == null)
          {
-            final char[] passwordChars = console.readPassword("Password [netxms]: ");
-            if (passwordChars == null || passwordChars.length == 0)
+            final char[] passwordChars = console.readPassword("Password: ");
+            if (passwordChars == null)
             {
-               optPassword = DEFAULT_PASSWORD;
+               optPassword = "";
             }
             else
             {
@@ -122,7 +121,7 @@ public class Shell
       }
       if (optPassword == null)
       {
-         optPassword = DEFAULT_PASSWORD;
+         optPassword = "";
       }
    }
 
index 3ec37e4..8ac46fd 100644 (file)
@@ -93,7 +93,8 @@ static int StartApp(int argc, char *argv[])
 #define cp s_optClassPath
 #endif
    JNIEnv *env;
-   JavaBridgeError err = CreateJavaVM(jre, _T("nxshell.jar"), cp, &vmOptions, &env);
+   static const TCHAR *syslibs[] = { _T("netxms-base.jar"), _T("netxms-client.jar"), _T("simple-xml-2.7.1.jar"), NULL };
+   JavaBridgeError err = CreateJavaVM(jre, _T("nxshell.jar"), syslibs, cp, &vmOptions, &env);
    if (err == NXJAVA_SUCCESS)
    {
       nxlog_debug(5, _T("JVM created"));
index f45192c..2db7f65 100644 (file)
@@ -46,7 +46,7 @@ typedef jint (JNICALL *T_JNI_CreateJavaVM)(JavaVM **, void **, void *);
  * @param env points where JNI environment for current thread will be stored
  * @return true if VM created successfully
  */
-JavaBridgeError LIBNXJAVA_EXPORTABLE CreateJavaVM(const TCHAR *jvmPath, const TCHAR *jar, const TCHAR *usercp, StringList *vmOptions, JNIEnv **env)
+JavaBridgeError LIBNXJAVA_EXPORTABLE CreateJavaVM(const TCHAR *jvmPath, const TCHAR *jar, const TCHAR **syslibs, const TCHAR *usercp, StringList *vmOptions, JNIEnv **env)
 {
    TCHAR errorText[256];
    s_jvmModule = DLOpen(jvmPath, errorText);
@@ -70,6 +70,16 @@ JavaBridgeError LIBNXJAVA_EXPORTABLE CreateJavaVM(const TCHAR *jvmPath, const TC
       classpath.append(FS_PATH_SEPARATOR_CHAR);
       classpath.append(jar);
    }
+   if (syslibs != NULL)
+   {
+      for(int i = 0; syslibs[i] != NULL; i++)
+      {
+         classpath.append(JAVA_CLASSPATH_SEPARATOR);
+         classpath.append(libdir);
+         classpath.append(FS_PATH_SEPARATOR_CHAR);
+         classpath.append(syslibs[i]);
+      }
+   }
    if (usercp != NULL)
    {
       classpath.append(JAVA_CLASSPATH_SEPARATOR);