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;
APEX 和 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"
我正在尝试通过 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;
APEX 和 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"