如何告诉PowerBuilder在启动时将选项传递给JVM?

时间:2017-04-26 14:15:33

标签: jvm powerbuilder

我想做什么?

我想在PowerBuilder中创建和使用java对象并在其上调用方法。这应该以较少的开销发生。 我不想使用java webservices!

所以我有一个工作示例,我可以在其中创建一个java对象,在该对象上调用一个方法并从被调用的方法输出结果。 一切都按预期工作。我使用的是Java 1.8.0_31。

但现在我想将我的java IDE(IntelliJ)附加到正在运行的JVM(由PowerBuilder启动)来调试由PowerBuilder调用的java代码。

现在我的问题

如何在启动JVM时告诉PowerBuilder添加特殊选项? 在特殊情况下,我想以某种方式添加以下选项:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

JVM的创建方式如下:

LONG ll_result
inv_java = CREATE JavaVM

ll_result = inv_java.CreateJavaVM("C:\Development\tms java\pbJavaTest", FALSE)
CHOOSE CASE ll_result
    CASE 1
    CASE 0
    CASE -1
        MessageBox ( "", "jvm.dll was not found in the classpath.")
    CASE -2
        MessageBox ( "", "pbejbclient90.jar file was not found." )
    CASE ELSE
        MessageBox ( "", "Unknown result (" + String (ll_result ) +")"  )
END CHOOSE

在PowerBuilder帮助中,我发现了一些覆盖静态注册表类路径的内容。有一些关于自定义属性的内容听起来像我正在寻找的东西。 但是没有关于如何添加JVM选项以覆盖默认行为的示例。

有没有人知道如何告诉PowerBuilder使用我的选项? 或者有没有人有任何建议可以指导我朝正确的方向发展?

更新1

我找到了一个解决我最初问题的旧帖子。 如果其他人想知道它是如何工作的,请看看这篇文章: http://nntp-archive.sybase.com/nntp-archive/action/article/%3C46262213.6742.1681692777@sybase.com%3E

  

嗨,您需要设置一些Windows注册表项。

     

在HKEY_LOCAL_MACHINE \ SOFTWARE \ Sybase \ Powerbuilder \ 9.0 \ Java下   是两个文件夹:PBIDEConfig和PBRTConfig。第一个用于何时   您从IDE中运行您的应用程序,并使用后者   当您运行已编译的应用程序时。这两个文件夹可以有   PBJVMconfig和PBJVMprops文件夹。

     

PBJVMconfig用于JVM配置选项,例如-Xms。你必须   指定从" 0"开始的增量键值一个,一个特别   关键"计数"告诉Powerbuilder有多少选项可以枚举。

     

PBJVMprops适用于所有-D选项。您不需要指定-D for   PBJVMProps,只是属性的名称及其值,以及尽可能多的   你想要的属性。

     

让我举几个例子:

     

Windows注册表编辑器版本5.00   [HKEY_LOCAL_MACHINE \ SOFTWARE \ SYBASE \的PowerBuilder \ 9.0 \爪哇\ PBIDEConfig \ PBJVMprops]   " java.security.auth.login.config" =" auth.conf"   " user.language" ="恩"

     

[HKEY_LOCAL_MACHINE \ SOFTWARE \ SYBASE \的PowerBuilder \ 9.0 \爪哇\ PBRTConfig \ PBJVMconfig]   " 0" =" -client"   " 1" =" -Xms128m"   " 2" =" -Xmx512m"   "计数" =" 3"

     

[HKEY_LOCAL_MACHINE \ SOFTWARE \ SYBASE \的PowerBuilder \ 9.0 \爪哇\ PBRTConfig \ PBJVMprops]   " java.security.auth.login.config" =" auth.conf"   " user.language" ="恩"

     

此致   Gokhan Demir

但现在又出现了另一个问题...... PB无法为我的示例类创建EJB代理,这对于Java 1.8.0_31来说非常简单。它们是使用默认版本创建的,即1.6.0_24。

public class Simple
{
  public Simple()
  {
  }

  public static String getValue()
  {
    return "blubber";
  }

  public int getInt32Value()
  {
    return 123456;
  }

  public double getDoubleVaue()
  {
    return 123.123;
  }

  public static void main(String[] args)
  {
    System.out.println(Simple.getValue());
  }
} 

错误如下。 :d

 ---------- Deploy: Deploy of project p_genapp_ejbclientproxy   (15:35:18)
Retrieving PowerBuilder Proxies from EJB...
    Generation Errors:  Error: class not found: ( 
    Deployment Error:   No files returned for package/component 'Simple'.       Error code: Unknown.   Proxy was not created.
Done.
 ---------- Finished Deploy of project p_genapp_ejbclientproxy   (15:35:19)

所以整个方式都不是一个选项,因为我们不想来回改变PB中的JAVA设置,只是为了在未来为改变的JAVA对象生成新的EJB代理......

因此,测试的一个选项是为JAVA类创建COM包装器以在PB ...中使用它们

0 个答案:

没有答案