Ошибка при выполнении запроса http от Oracle Триггер БД - java. sql .SQLException: ORA-29273: сбой HTTP-запроса ORA-12541: TNS: нет прослушивателя - PullRequest
0 голосов
/ 28 апреля 2020

Я использую приведенный ниже код для выполнения http-вызова через Oracle Триггер БД

create or replace TRIGGER TEST_TABLE_TRIGGER 
AFTER INSERT OR UPDATE OF VALUE ON TEST_TABLE 

for each row
DECLARE

  req utl_http.req;
  res utl_http.resp;
  buffer varchar2(4000); 
  url varchar2(4000) := 'http://localhost:8086/testMethod';

BEGIN
  req := utl_http.begin_request(url, 'GET',' HTTP/1.1');
  utl_http.set_header(req, 'content-type', 'application/json');
  res := utl_http.get_response(req);
  -- process the response from the HTTP call
  begin
    loop
      utl_http.read_line(res, buffer);
      dbms_output.put_line(buffer);
    end loop;
    utl_http.end_response(res);
  exception
    when utl_http.end_of_body 
    then
      utl_http.end_response(res);
  end;
END;

Команда DBA предоставила http-разрешение пользователю БД (SQL> grant execute на UTL_HTTP для userName; ) Однако в журнале приложений (Springboot) появляется ошибка ниже

java.sql.SQLException: ORA-29273: HTTP request failed
ORA-12541: TNS:no listener
ORA-06512: at "SYS.UTL_HTTP", line 368
ORA-06512: at "SYS.UTL_HTTP", line 1118
ORA-06512: at "userName.TEST_TABLE_TRIGGER", line 9
ORA-04088: error during execution of trigger 'userName.TEST_TABLE_TRIGGER '

Я попытался запустить приложение на сервере linux и использовал действительный IP-адрес вместо localhost ('http://localhost:8086/testMethod') и получил то же самое ошибка.

Когда я спросил команду DBA, они сказали, что прослушиватель базы данных работает и работает на портах 1525 и 1791 . Как / где использовать порт прослушивателя базы данных, чтобы этот код работал?

1 Ответ

0 голосов
/ 28 апреля 2020

Он не работал локально, когда я запускал код в STS (Spring Tool Site) с http://localhost: 8086 / testMethod URL в триггере БД. Однако после того, как я развернул код на Linux сервере и обновил localhost с помощью linux ip-адреса сервера (http: // {serverIP}: 8086 / testMethod), он заработал! Моя ошибка ! Я использовал неправильный URL в начале. Пожалуйста, дайте мне знать, если вы знаете, как заставить его работать локально, когда я запускаю код в STS.

...