答案仅适用于 ORDS 3.0.9。自述文件描述:
- BUG:25072243 - 如果 PL/SQL 网关池不存在,则修复回归防止启用 ORDS 的架构的 url 映射
没有它,我不相信这会起作用(未经测试)。请注意,如果从 ORDS 3.0.6 或更早版本升级,则数据库架构发生了更改,您需要升级。
这不是一个完整的答案,但它是我设法得到的最接近的答案。首先将 ords.war 文件重命名为所需的 redirect_name.war 这将自动为数据库连接创建一个新的配置目录,但尚未设置。选项是安装 redirect_name.war 使用:
java -jar redirect_name.war install simple
或通过手动编辑配置文件以匹配您已有的 ORDS 设置。有两种方法可以找到配置目录
java -jar redirect_name.war configdir
将为您提供配置目录,或者您可以将其签入:
.\webapps\redirect_name\WEB-INF\web.xml
使用参数名称假设 Tomcat 被配置为解压缩 WAR,否则请查看压缩的 WAR 存档本身。
此时 URL 已更改为:
https://server:port/ords/workspace/hr/employees/7369
对此:
https://server:port/redirect_name/workspace/hr/employees/7369
下一步是设置一个 map-url,可以使用以下方法完成:
java -jar redirect_name.war mapurl --type base-path --workspace-id hr / apex
或者通过在上面找到的手动创建一个 url-mapping.xml 文件。如果您手动创建文件,它应该如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<pool-config xmlns="http://xmlns.oracle.com/apex/pool-config">
<pool name="apex" base-path="/" workspace-id="hr" updated="2017-01-01T01:01:01.012Z"/>
</pool-config>
池名称“apex”是默认安装的数据库名称。您可以通过检查 /conf/ 子目录来检查 ORDS 中设置了哪些数据库名称,在默认安装中,您将找到一个名为 apex_pu.xml 的文件,描述数据库连接。如果您希望连接到可以通过以下方式完成的不同数据库(此处有更多信息) :
java -jar redirect_name.war setup --database ords_db_name
这将引导您通过一系列提示输入服务名称或 SID。请注意,此处提示时必须选择1:
Enter 1 if you want to verify/install Oracle REST Data Services schema or 2 to skip this step [1]
否则不会创建数据库连接。要验证成功,请检查 /conf 位置并查找 ords_db_name_pu.xml 请注意,ords_db_name 只是 ORDS 使用的数据库连接名称别名,它不必是实际的 SID 或服务名称。
这些步骤将从中间步骤降低 URL:
https://server:port/redirect_name/workspace/hr/employees/7369
对此:
https://server:port/redirect_name/workspace/employees/7369
带有 / 的 url-mapping.xml/mapurl 选项不需要任何名称。或者,可以使用此命令:
java -jar redirect_name.war mapurl --type base-path --workspace-id hr /something_here apex
产生这个网址:
https://server:port/redirect_name/workspace/something_here/employees/7369
未测试
将 ords.war 重命名为 ROOT.war 理论上消除了 URL 中需要“redirect_name”,但我不准备在 ROOT 位置使用 ORDS。