PL/SQL Web Server 体系结构
PL/SQL Web程序依赖于OHS或XML DB产品和PL/SQL Toolkit 。PL/SQL Toolkit实际上是PL/SQL Web Toolkit。原始PL/SQL Toolkit配备了Oracle 7。接下来的版本对它进行了扩展并使它更稳定。PL/SQL Toolkit使开发人员可以基于嵌套在存储过程或PL/SQL Server Page(PSP)中的业务逻辑来呈现动态Web页面。
PSP 是在Oracle 8i(8.1.6版本)中引入的。它们可以用来构建Java Server Page(JSP)的等价物 , 而不需要掌握Java和PL/SQL。 PSP采用与脚本语言相同的模式:JPS和ASP (Microsoft的.NET发行 套件中的Active Server Page)。PSP的最大优点是不必构建JServlet,因为Oracle提供了另一个架构 。Oracle 11g的第一个生产版本配备了PL/SQL Web Toolkit,版本为10.1.2.0.8。
OHS提供了一个接收和处理Uniform Resource Locator(URL)请求的HTTP侦听器。它基于Apache HTTP服务器。 Apache和OHS服务器支持Common Gateway Interface( CGI) ,通过这个接口可以运行服务器端 include程序。它们还支持Apache模块。
Oracle实现了一个mod_plsql模块 ,它与PL/SQL程序的作用相同。OHS定义了通过Data Access Descriptor(DAD)链接的虚拟映射上的传入请求之间的关系。DAD包含管理Oracle数据库的HTTP管道连接的连接信息。 OHS侦听器在 URL中收到的信息映射为可能的DAD值。然后DAD值将连接映射到数据库。 DAD在OHS主页的Apache/modplsql/conf /dads.conf物理文件中。
Oracle HTTP Server(OHS) 过程:
(1) OHS从客户端浏览器中收到一个PL/SQL过程或PSP请求 。
(2) OHS向mod_plsql模块发送请求。
(3) mod_plsql模块将请求转发给Oracle Database上的一个存储过程 。mod_plsql模块通过读取存储在文件系统上的DAD映射信息来发送请求。mod_plsql模块还准备调用参数和调用数据库代码。
(4) 一个存储过程通过调用PL/SQL Web Toolkit生成一个HTML页面。可以创建一个支持Web的存储过程或起到存储过程 作用的PSP。
(5) PL/SQL Web Toolkit返回调用过程的HTML格式 。
(6) 存储过程返回一个格式化HTML页面作为对OHS的响应。
(7) OHS将返回的HTML页面转发给呈现页面的客户端浏览器上。
Oracle XML Database Server体系结构
XML Database Server(或 XML DB Server)是Oracle 11g数据库中的嵌入式服务 。
它是一个带嵌入式PL/SQL网关的Apache HTTP Server。
这个网关也有一个在数据库中维护的Database Access Descriptor(DAD)。
与标准Apache HTTP服务器一样 ,XML Database Server支持CGI和Apache模块。
嵌入式PL/SQL网关也有一个DAD。与OHS产品不一样,XML Database Server要求所有维护都通过数据库进行。
Oracle XML Database Server过程
(1) XML DB Listener从客户端浏览器中收到一个PL/SQL过程或PSP请求。
(2) XML DB Listener向DAD中定义的虚拟路径映射中所指定的Embedded PL/SQL Gateway发送请求。请求由Embedded PL/SQL Gateway的mod_plsql模块转发给Oracle Database中的存储过程。mod_plsql模块通过读取存储在数据库中的DAD映射信息来发送请求。这时,Embedded PL/SQL Gateway对访问权限进行了身份验证。
(3) Embedded PL/SQL Gateway的mod_plsql模块准备了调用参数和调用数据库存储过程。
(4) 存储过程通过调用PL/SQL Web Toolkit生成一个HTML页面。可以创建一个支持Web的存储过程或起存储过程作用的PSP。
(5) PL/SQL Web Toolkit向调用过程返回HTML格式。
(6) 存储过程返回一个格式化的HTML页面作为对XML DB Listener的响应。
(7) XML DB Listener将返回的HTML页面转发给呈现页面的客户端浏览器上。
这个过程非常类似请求的独立OHS处理方式