我不希望用户能够在ORD URL中看到上下文或模式名称。
如《甲骨文》文档中的我的URL是这样的:
https://server:port/ords/workspace/hr/employees/7369
请注意架构名称,HR存在。我的目标是隐藏Ords,Workspace和HR。所以我的URL应该是:
https://server:port/redirect_name/employees/7369
我不想要的是http 301重定向,该重定向更新浏览器栏。
尝试了
1(root中的urlrewriteFilter,但带有type ="重定向",它仅重定向并泄漏上下文。如果没有类型="重定向"产生"不可用的资源。"从tomcat中显然甚至没有到达Ords。
2(JSP重定向
<% response.sendRedirect("/some/where"); %>
成功重定向但泄漏上下文。
3(tomcat"重写阀"再次相同的结果成功301型重定向。
未尝试
1(带有apache httpd实例的前猫。
答案仅适用于ORDS 3.0.9。README描述:
- 错误:25072243-修复回归防止ORD的URL映射启用模式,如果PL/SQL网关池不存在
没有,我不相信这将起作用(未进行测试(。请注意,如果从ORDS 3.0.6或更早开始升级,DB模式已更改,则需要升级。
这不是一个完整的答案,但它是我设法获得的最接近的答案。首先将ords.war文件重命名为所需的redirect_name.war这将自动为数据库连接创建新的配置目录,但尚未设置。选项是安装redirect_name.war使用:
java -jar redirect_name.war install simple
或通过手动编辑配置文件以匹配您已经拥有的ORDS设置。有两种方法可以找到配置目录
java -jar redirect_name.war configdir
将为您提供配置目录,或者您可以在:
中检查它.webappsredirect_nameWEB-INFweb.xml
使用PARAM名称,假设Tomcat配置为解开战争,否则在压缩战争档案中查看。
在这一点上,URL与此相反:
https://server:port/ords/workspace/hr/employees/7369
:
https://server:port/redirect_name/workspace/hr/employees/7369
下一步是设置一个可以使用:
完成的MAP-urljava -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/subdirectory在默认安装中查看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选项,with/删除了任何名称的需求。或者可以使用此命令:
java -jar redirect_name.war mapurl --type base-path --workspace-id hr /something_here apex
产生此URL:
https://server:port/redirect_name/workspace/something_here/employees/7369
未测试
重命名ords.war to root。理论上的war消除了在URL中对" redirect_name"的需求,但我不准备将ORD在根位置。