Загрузка файлов в приложении, отличном от 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
Другие вопросы по тегам