Может ли база данных Oracle отправлять запросы сервлету? - PullRequest
0 голосов
/ 14 мая 2018

Обычно мы отправляем запросы из браузера, однако мне интересно, может ли база данных сделать то же самое.Допустим, у меня есть сервлет на моем сервере и база данных Oracle.

Возможно ли, что при использовании параметра Расписание база данных сможет отправлять запросы сервлету?

1 Ответ

0 голосов
/ 14 мая 2018

Использование UTL_HTTP

Да, вы можете отправлять HTTP-запросы из базы данных Oracle.Вот хороший пост в блоге, в котором кратко излагается, как вы можете сделать это, используя пакет UTL_HTTP : https://oracle -base.com / articles / misc / utl_http-and-ssl

Пример из руководства Oracle :

SET SERVEROUTPUT ON SIZE 40000

DECLARE
  req   UTL_HTTP.REQ;
  resp  UTL_HTTP.RESP;
  value VARCHAR2(1024);
BEGIN
  UTL_HTTP.SET_PROXY('proxy.my-company.com', 'corp.my-company.com');
  req := UTL_HTTP.BEGIN_REQUEST('http://www-hr.corp.my-company.com');
  UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/4.0');
  resp := UTL_HTTP.GET_RESPONSE(req);
  LOOP
    UTL_HTTP.READ_LINE(resp, value, TRUE);
    DBMS_OUTPUT.PUT_LINE(value);
  END LOOP;
  UTL_HTTP.END_RESPONSE(resp);
EXCEPTION
  WHEN UTL_HTTP.END_OF_BODY THEN
    UTL_HTTP.END_RESPONSE(resp);
END;

Альтернатива с использованием Oracle AQ

Если вам нужен некоторый промежуточный уровень, вы также можете использовать Oracle AQ,который я лично считаю более мощным: https://docs.oracle.com/database/121/ADQUE/aq_intro.htm

Используя Oracle AQ, вы можете, например, обойти уровень HTTP и получить доступ к тому, что сервлет вызывает внутри, напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...