非 Apex PL/SQL 应用程序中的文件上传已迁移到 ORDS
File uploads in a non-Apex PL/SQL application migrated to ORDS
Oracle 官方文档 1982130.1 描述了目前阻止我们从 mod_plsql 迁移到 ORDS 的缺失特性:
Migrate a Non-Apex PL/SQL application from Oracle HTTP Server to
Oracle REST Data Services (ORDS) 2.0.9. When running the PL/SQL
application with Oracle REST Data Services, got the following error
message: "ORA-20888: p_application_id must be provided" error in
catalina.out regardless of the value of that parameter.
其他人如何将非 Apex 应用程序从 mod-plsql 迁移到 ORDS?
ORDS 18.3+ 逻辑发生了变化,使非顶点更容易。这是流程图中的新逻辑,希望能让它更容易理解。
在 18.3 之前及以下版本中,这是完成相同操作的方法 >
现在要抓住的是有一个 hacky 解决方法来让它工作,那就是假装 apex 太旧而无法使用该代码路径。 (是的是的我会解决这个问题)
在连接池文件中配置的数据库用户中,创建此视图。该代码检查是否安装了 apex 4+ 以使用它。这个视图是如何检查的,所以强制 ords to thing apex is old 将使普通的 'ol DOC Table 路径被使用。
create view apex_release as
select '1.0.0.0' VERSION_NO from dual;
url-mapping.xml
<?xml version="1.0" encoding="UTF-8"?>
<pool-config xmlns="http://xmlns.oracle.com/apex/pool-config">
<pool base-path="/klrice" name="klrice" />
</pool-config>
conf/klrice.xml
参数名为apex.docTable,此将默认为"FLOWS_FILES.WWV_FLOW_FILE_OBJECTS$"
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="db.username">klrice</entry>
<entry key="db.password">klrice</entry>
<entry key="apex.docTable">klrice.MYDOCTABLE</entry>
</properties>
我的Table
KLRICE@xe >CREATE TABLE MYDOCTABLE (
2 NAME VARCHAR(256) UNIQUE NOT NULL,
3 MIME_TYPE VARCHAR(128),
4 DOC_SIZE NUMBER,
5 DAD_CHARSET VARCHAR(128),
6 LAST_UPDATED DATE,
7 CONTENT_TYPE VARCHAR(128),
8 CONTENT LONG RAW,
9* BLOB_CONTENT BLOB );
被调用后:
1* select BLOB_CONTENT from MYDOCTABLE
KLRICE@xe >/
BLOB_CONTENT
--------------------------------------------------------------------------------
89504E470D0A1A0A0000000D49484452000000C8000000C80806000000AD58AE9E00000001735247
Oracle 官方文档 1982130.1 描述了目前阻止我们从 mod_plsql 迁移到 ORDS 的缺失特性:
Migrate a Non-Apex PL/SQL application from Oracle HTTP Server to Oracle REST Data Services (ORDS) 2.0.9. When running the PL/SQL application with Oracle REST Data Services, got the following error message: "ORA-20888: p_application_id must be provided" error in catalina.out regardless of the value of that parameter.
其他人如何将非 Apex 应用程序从 mod-plsql 迁移到 ORDS?
ORDS 18.3+ 逻辑发生了变化,使非顶点更容易。这是流程图中的新逻辑,希望能让它更容易理解。
在 18.3 之前及以下版本中,这是完成相同操作的方法 >
现在要抓住的是有一个 hacky 解决方法来让它工作,那就是假装 apex 太旧而无法使用该代码路径。 (是的是的我会解决这个问题)
在连接池文件中配置的数据库用户中,创建此视图。该代码检查是否安装了 apex 4+ 以使用它。这个视图是如何检查的,所以强制 ords to thing apex is old 将使普通的 'ol DOC Table 路径被使用。
create view apex_release as
select '1.0.0.0' VERSION_NO from dual;
url-mapping.xml
<?xml version="1.0" encoding="UTF-8"?>
<pool-config xmlns="http://xmlns.oracle.com/apex/pool-config">
<pool base-path="/klrice" name="klrice" />
</pool-config>
conf/klrice.xml
参数名为apex.docTable,此将默认为"FLOWS_FILES.WWV_FLOW_FILE_OBJECTS$"
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="db.username">klrice</entry>
<entry key="db.password">klrice</entry>
<entry key="apex.docTable">klrice.MYDOCTABLE</entry>
</properties>
我的Table
KLRICE@xe >CREATE TABLE MYDOCTABLE (
2 NAME VARCHAR(256) UNIQUE NOT NULL,
3 MIME_TYPE VARCHAR(128),
4 DOC_SIZE NUMBER,
5 DAD_CHARSET VARCHAR(128),
6 LAST_UPDATED DATE,
7 CONTENT_TYPE VARCHAR(128),
8 CONTENT LONG RAW,
9* BLOB_CONTENT BLOB );
被调用后:
1* select BLOB_CONTENT from MYDOCTABLE
KLRICE@xe >/
BLOB_CONTENT
--------------------------------------------------------------------------------
89504E470D0A1A0A0000000D49484452000000C8000000C80806000000AD58AE9E00000001735247