关于 http:Oracle APEX 中 UTL_HTTP 包的问题

Problem with UTL_HTTP Package in Oracle APEX

我遇到了 APEX 问题。我们有两台服务器。一个(运行 Oracle APEX)是大学服务器,我们只能访问工作区。另一台是我家中的 Linux 计算机,它充当服务器(使用 Jasperreports 容器运行 Tomcat)。我想从 APEX 机器向 Jasperreports 机器发送一个 UTL_HTTP 请求。有一个按钮,使用以下代码触发进程:

1
2
3
4
5
6
7
8
9
10
11
12
13
 BEGIN
  xlib_jasperreports.set_report_url('http://X.X.X.X:8080/JasperReportsIntegration/report');
  xlib_jasperreports.show_report (p_rep_name => :p5_rep_name,
                                  p_rep_format => :p5_rep_format,
                                  p_data_source => :p5_data_source,
                                  p_out_filename => :p5_out_filename,
                                  p_rep_locale => :p5_rep_locale,
                                  p_rep_encoding => :p5_rep_encoding,
                                  p_additional_params => :p5_additional_params);

  -- stop rendering of the current APEX page
  apex_application.g_unrecoverable_error := TRUE;
END;

按下触发按钮 20 到 30 秒后,我收到以下错误消息:

ORA-29273:HTTP 请求失败 ORA-06512:在 "SYS.UTL_HTTP",第 1029 行 ORA-12535:TNS:操作超时

我通过设置一个通用 url 检查了 set_report_url 函数。它奏效了。有人知道吗?

提前致谢,
哈尼球


Oracle 的后一个版本具有网络 ACL 安全性,因此架构所有者可能没有访问该特定 URL 的权限。但是,我希望这样做会违反安全规定。

另一种选择是它被数据库服务器和您的家庭计算机之间的防火墙阻止。可能(很可能)数据库服务器机器已设置为仅允许访问一小部分站点(或根本不允许访问)。您的家用计算机上也可能有防火墙,可阻止不在 IP 地址/范围列表中的计算机进行访问。

尝试针对各种网站(例如 google.com 主页)执行一些基本的 UTL_HTTP 操作,看看得到什么响应。

错过了明显的 UTL_HTTP.set_transfer_timeout。可能是在家庭服务器上这项工作花费的时间太长了。