如何从Oracle Forms 6i调用Java对象/函数?

wil*_*824 1 java methods class oracleforms invoke

我正在开发一个使用Oracle Forms 6i的遗留项目(是的,我知道它的旧版本)来从PLL库调用C++函数.

现在我们需要使用Java而不是C++,因此我们需要从Oracle Forms调用Java(Object/Class/Method).

我知道它是一个具有挑战性的主题,但如果有人能够提供一个执行以下操作的简单示例,我会非常高兴:

  • 调用Java类中的方法,传递一个int变量(在PL/SQL中)
  • 在Canvas中打印执行函数的返回值.

一个基本的例子,也许是一个Hello World是理想的.

我知道一些PL/SQL,但我不是Oracle Forms开发人员; 请多多包涵.

如果这是不可能的,你能指点我一些其他选择吗?

wil*_*824 7

好吧,在通过互联网进行密集查找后,我遇到了一个非常好的资源(虽然是西班牙语):Elias关于Oracle Forms和Java的博客

我用:

  • Oracle Forms 6i
  • JDK 1.6

有了这个我设法创建了hello world示例:


配置PATH环境变量:

  • C:\ PATH_TO_JAVA \的Java\jdk1.6.0\BIN;
  • C:\ PATH_TO_JAVA \的Java\jdk1.6.0\jre的\ BIN;
  • C:\ PATH_TO_JAVA \的Java\jdk1.6.0\jre的\ BIN \客户端;

例如: PATH_TO_JAVA = C:\ Program Files


添加到CLASSPATH

  • FORMS_HOME\TOOLS\common60\JAVA\IMPORTER.JAR(在我的例子中,FORMS_HOME是C:\ orant)
  • PATH_TO_YOUR_JAR\NAME_OF_JAR.jar

创建Java程序

  1. 使用IDE创建一个简单的java程序,以下是我的:

    public class HiWorld{        
      private String hi="Hello World!";
    
      public String getHi(){
        return this.hi;
      }
    
      public String getMultiply(int a, int b){
        return ""+a*b;
      }
    
      public static void main(String args[]){            
        HiWorld hm = new HiWorld();
        System.out.println(hm.getHi());
        System.out.println(hm.getMultiply(5,10));                
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将其导出到Jar文件(Path必须是您放入CLASSPATH环境变量的那个.

将类导入Forms

在Oracle Forms中创建一个新项目并创建一个Canvas,在画布中使用Text和Button.按钮的名称:TEXT_HI_WORLD.

单击菜单:程序>导入Java类

如果一切顺利,那么会有一个新的窗口显示Class所在的包,你将它扩展到HiWorld类.导入它.

在程序单元中,现在将有两个文件:

  • HIWORLD(规格)
  • HIWORLD(身体)

这是自动生成的文件,需要使用该类.

然后返回画布,右键单击Button并选择Thrigger WHEN-BUTTON-PRESSED,编程将是:

DECLARE
    v_wb      ORA_JAVA.JOBJECT;
    v_hi      VARCHAR2(20);
BEGIN
    v_wb := hiworld.new();
    v_hi:= hiworld.getHi(v_wb);
    :TEXT_HI_WORLD := v_hi
END;
Run Code Online (Sandbox Code Playgroud)

现在执行程序并单击按钮!:)

希望这有助于对表单没有太多了解的Java程序员与遗留系统集成!:d