我想做什么?
我想在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 ...中使用它们