Tomcat 8上的Oracle ORDS隐藏了网址

时间:2017-06-08 04:12:58

标签: oracle tomcat8 oracle-ords

我不希望用户能够在ORDS网址中看到上下文或架构名称。

在Oracle文档中,我的URL是这样的:

https://server:port/ords/workspace/hr/employees/7369

请注意架构名称HR已存在。我的目标是隐藏ORDS,工作空间和人力资源。所以我的网址应该是:

https://server:port/redirect_name/employees/7369

我不想要的是更新浏览器栏的HTTP 301重定向。

尝试过的事情

1)ROT中的UrlRewriteFilter,但类型="重定向"它只重定向并泄漏上下文。没有type ="重定向" yield"请求的资源不可用。"来自Tomcat,显然甚至无法进入ORDS。

2)JSP重定向

<% response.sendRedirect("/some/where"); %>

成功重定向,但泄漏了上下文。

3)Tomcat&#34;重写Valve&#34;再次相同的结果成功301型重定向。

未尝试

1)具有Apache httpd实例的前端Tomcat。

1 个答案:

答案 0 :(得分:2)

答案仅适用于ORDS 3.0.9。 README描述了:

  • 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

使用param名称假设Tomcat配置为解压缩WAR,否则查看压缩的WAR归档本身。

此时网址已更改为:

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的文件。如果您希望连接到可以使用的其他数据库(more here)

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理论上不需要将“redirect_name”放在URL中,但我不准备在ROOT位置使用ORDS。