Как я могу вызвать объект / функцию Java из Oracle Forms 6i?

#java #class #methods #invoke #oracleforms

#java #класс #методы #вызвать #oracleforms

Вопрос:

Я работаю над устаревшим проектом, который использует Oracle Forms 6i (да, я знаю его старый) для вызова функций C из библиотеки PLL.

Теперь нам нужно использовать Java вместо C , поэтому нам нужно вызвать Java (Object / Class / Method) из Oracle Forms.

Я знаю, что это сложная тема, но я был бы действительно рад, если бы кто-нибудь мог предоставить простой пример, который выполняет следующее:

  • Вызов метода из класса Java, передача переменной int (в PL / SQL)
  • Печать возвращаемого значения в Canvas, который выполнил функцию.

Базовый пример, возможно, Hello World был бы идеальным.

Я немного знаю PL / SQL, но я не разработчик Oracle Forms; пожалуйста, потерпите меня.

Если это невозможно, не могли бы вы указать мне на некоторые другие альтернативы?

Комментарии:

1. Oracle Forms 7? — Версия Forms была изменена с 6 на 9i.

2. Спасибо Сатье за исправление, отредактировал вопрос 🙂

Ответ №1:

Что ж, после интенсивного поиска в Интернете я наткнулся на очень хороший ресурс (правда, на испанском): Блог Элиаса об Oracle Forms и Java

Я использую:

  • Oracle Forms 6i
  • JDK 1.6

С помощью этого мне удалось создать пример hello world:


Настройте переменные среды PATH:

  • C:PATH_TO_JAVAJavajdk1.6.0bin;
  • C:PATH_TO_JAVAJavajdk1.6.0jrebin;
  • C:PATH_TO_JAVAJavajdk1.6.0jrebinclient;

Пример: PATH_TO_JAVA = C:Program Файлы


Добавить в CLASSPATH

  • FORMS_HOMETOOLScommon60JAVAIMPORTER.JAR (В моем случае FORMS_HOME был C:orant )
  • PATH_TO_YOUR_JARNAME_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));                
      }
    }
      
  2. Экспортируйте его в файл Jar (Путь должен быть тем, который вы указали в переменной окружения CLASSPATH.

Импортируйте классы в формы

Создайте новый проект в Oracle Forms, а также создайте холст, в холсте используйте текст и кнопку. Название кнопки: TEXT_HI_WORLD.

Следующий щелчок в меню: Программа> Импортировать классы Java

Если все прошло нормально, появится новое окно, которое покажет вам пакет, в котором находится класс, вы расширяете его до тех пор, пока не появится класс HiWorld. Импортируйте его.

В программном модуле теперь будет два файла:

  • HIWORLD (Спецификация)
  • HIWORLD (тело)

Это файлы, сгенерированные автоматически и необходимые для использования класса.

Затем вернитесь к canvas, щелкните правой кнопкой мыши на кнопке и выберите Thrigger ПРИ НАЖАТИИ кнопки программирование этого будет:

 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;
  

Теперь запустите программу и нажмите на кнопку! 🙂

Надеюсь, это поможет Java-программистам, не имеющим особых знаний о формах, интегрироваться с устаревшими системами! 😀

Комментарии:

1. Я выполнил этот шаг. Но я получил исключение, подобное этому FRM-40735: ПРИ НАЖАТИИ кнопки триггера возникло необработанное исключение ORA-105101

Ответ №2:

Я делал это раньше, и с простым классом это должно сработать, но когда вы пытаетесь разработать что-то более сложное, я рекомендую расширить из класса VBean, вы можете найти библиотеку в папках установки oracle forms (frmall.jar ).

Ответ №3:

 // el programa corregido.

public class HolaMundo {

private String hi= "Hey World!!!";

  public String GetHi(){
    return this.hi;
  }

public static void main(String args[]){

    HolaMundo  hm = new HolaMundo();
    System.out.println(hm.GetHi());

  }
}