APEX 和 JasperServer 的集成

Integration of APEX and JasperServer

我正在尝试通过 APEX 动态操作启动 jasperreports(在 jaspersoft 服务器上)。 当我执行这个时,我收到一个错误:

即使我只是想登录

DECLARE

  v_blob                 BLOB;
  v_file_name            VARCHAR2 (25) := 'TestReport.pdf';
  v_vcContentDisposition VARCHAR2 (25)  := 'inline';

  v_invoice_id VARCHAR2(10) := :INVOICE_ID; -- your NumberField Item
  v_hostname   VARCHAR2(30) := #HOST#; -- your hostname, eg: localhost
  v_port       NUMBER       := #PORT#; -- port for your JasperReports Server, eg: 8081
  v_username   VARCHAR2(50) := 'jasperadmin'; -- jasperreports server username 
  v_password   VARCHAR2(50) := 'jasperadmin'; -- jaspereports server password

  v_jasper_string VARCHAR2(30) := v_username || ';' || v_password;

  v_login_url  VARCHAR2(100) := 
    'http://' || v_hostname || ':' || v_port || '/jasperserver/rest/login';
  v_report_url VARCHAR2(100) := 
    'http://' || v_hostname || ':' || v_port || '/jasperserver/rest_v2/reports/Reports/' || v_file_name;

BEGIN

  -- log into jasper server
  v_blob := apex_web_service.make_rest_request_b(
    p_url => v_login_url,
    p_http_method => 'GET',
    p_parm_name => apex_util.string_to_table('j_username;j_password',';'),
    p_parm_value => apex_util.string_to_table(v_jasper_string,';')
  );  APEX_APPLICATION.STOP_APEX_ENGINE;

EXCEPTION
  WHEN OTHERS THEN
    RAISE;

END;

A​​PEX 和 JasperServer 在不同的端口上。

您是否已将目标 ip:port 添加到 ACL?

https://docs.oracle.com/database/121/ARPLS/d_networkacl_adm.htm#ARPLS148

问题出在 https 协议上。 Apex 有 https 而 Jasperserver 没有。 结论是(apex和jasperserver)都需要有https。

编辑: 此外,我需要创建适当的 ACL 并创建 Oracle Wallet 以避免 "Certificate Validation Error"