Загрузка файлов в приложении, отличном от Apex PL/SQL, перенесена в ORDS
В официальном документе Oracle 1982130.1 описана недостающая функция, которая в настоящее время не позволяет нам перейти с mod_plsql на ORDS:
Миграция не-Apex PL/SQL-приложения с Oracle HTTP Server на Oracle REST Data Services (ORDS) 2.0.9. При запуске приложения PL / SQL с Oracle REST Data Services выдается следующее сообщение об ошибке: "ORA-20888: должен быть указан p_application_id" в catalina.out независимо от значения этого параметра.
Что делают другие, чтобы перенести не-Apex приложение из mod-plsql в ORDS?
1 ответ
ORDS 18.3+ логика изменилась, чтобы было проще для не-апекса. Вот новая логика в блок-схеме, которая, надеюсь, облегчит следовать.
В предыдущей версии 18.3 и ниже описывается, как сделать то же самое>
Подвох сейчас в том, что есть хакерский обходной путь к тому, чтобы заставить это работать, и это значит, что apex слишком стар, чтобы использовать этот путь кода. (да, да, я исправлю это)
Создайте это представление в пользователе db, настроенном в файле пула соединений. Код проверяет, установлен ли apex 4+, чтобы использовать это. Это представление показывает, как это проверяется, поэтому принудительное обращение к старому объекту приведет к использованию обычного пути к таблице DOC.
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>
конф /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>
Мой стол
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