Мне не разрешено компилировать класс java в экземпляр Oracle, на котором мы работаем, по запросу архитекторов, поэтому я ищу альтернативы. Требование состоит в том, чтобы использовать библиотеку Java, расположенную на сервере приложений в сети. Можно ли вызвать из PL/SQL метод Java, расположенный на другом компьютере? Я нашел эту статью, в которой говорится о внешних процедурах в Oracle, но я не уверен, что он это позволяет. Кроме того, производительность также должна быть достаточно высокой, чтобы ее можно было использовать для пакетной обработки тысяч или миллионов вызовов.
Вызов Oracle метода Java на другом компьютере
Ответы (2)
Я подозреваю, что лучшее, что вы можете сделать, это добавить записи в другую таблицу, которую ваш процесс Java опрашивает, чтобы получить каждое или несколько сообщений. Oracle на самом деле не предназначен для обработки сообщений.
В любом случае, я бы обсудил это с вашим Архитектором, что делать, поскольку он эксперт. ;)
Если ваша система Oracle не может выполнить эту работу, вам может потребоваться решение, не использующее Oracle.
У вас есть три варианта:
1.) Мы решили аналогичную проблему, заставив PL/SQL вызывать HTTP с использованием UTL_HTTP, а затем позволить серверу приложений вызывать процедуру Java. Мы сделали это, чтобы связать нашу базу данных Oracle с Oracle Reports. PL/SQL запустил HTTP-запрос, который был получен сервером приложений, который вызвал Java. Java может вызывать PL/SQL через обычный JDBC.
2.) Возможно, вы не сможете загрузить этот java-процесс, но, возможно, вы можете создать какую-то другую хранимую процедуру java, которая может вызывать ее с помощью RMI.
3.) AQ — еще один метод. По сути, вы можете поставить сообщение в очередь с помощью AQ и использовать JMS на сервере приложений, чтобы исключить его из очереди и использовать.
Вариант 3 будет самым быстрым, хотя мы пробовали вариант 1, и задержка для него не так велика, как вы могли бы. Он также предлагает способ выполнения некоторой параллельной обработки путем параллельного запуска нескольких запросов.