Получить адрес сервера приложений Oracle
В Oracle Forms and Reports существует какая-либо функция или процедура или возможность получить адрес сервера приложений.
Например:
http://hostname:portno/servlet/RWServletserver=repserver+report=ReportName+destype=cache+userid=ConnectString+desformat=htmlcss
И я хочу получить эту часть: http://hostname:portno
Или, может быть, есть возможность создать ссылку на приложение другим способом, не зная адреса сервера приложения?
Ссылка на файл Excel, который создается отчетом. Ссылка сверху - это просто пример, а не ссылка на файл. путь к файлу известен.
1 ответ
У меня есть частичное решение для вас - следующий фрагмент кода Forms PL/SQL вернет IP-адрес сервера приложений:
declare
v_ip_address varchar2(20);
--
begin
select SYS_CONTEXT('USERENV','IP_ADDRESS') into v_ip_address from dual;
--
end;
Предостережение в отношении этой функции заключается в том, что форма / отчет должна быть подключена к базе данных, чтобы использовать ее, так как она использует функцию базы данных. Однако он всегда будет возвращать IP-адрес сервера приложений, а не сервера базы данных; и был проверен, где они находятся на разных коробках.
SYS_CONTEXT - это функция базы данных Oracle (подтверждена доступной в 9i, 10g и 11g), которая возвращает значение параметра, связанного с пространством имен контекста; он поставляется со встроенным пространством имен USERENV. Это пространство имен имеет ряд интересных и полезных параметров; см. http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions165.htm для получения подробной информации.
Используемый здесь конкретный параметр - IP_ADDRESS - возвращает IP-адрес подключенного клиента, который с точки зрения базы данных является сервером приложений, поскольку именно здесь фактически выполняется форма / отчет - так вы получаете то, что вам нужно:) Это должно работать как для отчетов, так и для форм, хотя я не проверял это.
Боюсь, я не вижу способа узнать номер порта, но, надеюсь, вышеизложенное поможет вам.
Ура,
Кит