ebs系统架构简介1——三层结构上篇

  1. 云栖社区>
  2. 博客>
  3. 正文

ebs系统架构简介1——三层结构上篇

长烟慢慢 2013-08-14 19:02:29 浏览645
展开阅读全文

转载自:http://www.itpub.net/thread-1409361-1-1.html

Oracle Applications DBA 基础》3- 4 系统架构及基本系统管理知识

1. 系统架构介绍
==============

Oracle 的applications 主要包括一个文件系统一个数据库

而文件系统包括:forms(用来交互和更新数据)、reports(用来显示标准的输出数据)、一致性程序(提供了大容量、非交互的数据更新操作)、程序和sql脚本(管理这个系统)、html和java(用来显示用户界面和实现商业应用)

数据库包括:数据对象(表、索引等)、代码对象(sql、plsql块,过程、函数、触发器)



分层架构分析:

1、Desktop Tier:

Oracle applications 的架构是 multi-tier 的。不同层有不同的 components 如下:
在Desktop Tier 上既有 典型的HTML界面又有传统的 FORMS 界面 。FORMS界面通过Forms client Applet (Java client Applet的一种)与 应用服务器联系,下载 有关的JAR file。原来的11i 需要 Oracle 专用的JVM, 叫 Jinitiator。 R12 中只需要标准的 J2SE plugin JVM。JAR文件包含了所有需要的类文件,用来显示ebs所有描述性的form表单。


对于form 客户端的applet,一般常用的jar文件在第一次session的时候就会下载到本地;但是对于不常用的jar文件,使用的时候才会下载下来。所有下载下来的文件都会cache到本地的客户端,以供后续的会话使用,具体的cache目录如下:<HOMEDRIVE>\Documents and Settings\<Windows User Name>\Application Data\Sun\Java\Deployment\cache 我自己的在这个目录里:C:\Users\liu\AppData\LocalLow\Sun\Java\Deployment\cache

在R12中,我们可通过java插件的控制台(从哪个java图标点——打开控制面板——高级——java控制台)

所有对jar文件的更新都会被安装到应用层,然后才会被自动下载到客户端那一层。




2、Application Tier:

对应地, 在Application Tier,既有web 服务器,J2EE 服务器,也有传统的 FORMS/Reports 服务器。当然,还有 batch job 用的 Concurrent Manager。所以我们可以认为oracle application Tier包括了如下四个服务:

·Web  services
·Forms  services
·Concurrent   Processing    server
·Admin   server

笼统的看,应用层扮演了两个角色:

1,、集群化不同的服务器(这里不是指硬件,是指提供服务的程序如:并行处理服务器(concurrent processing server))和服务组来完成商业逻辑;

2、管理Desktop 和 database层的会话交互。




R12 有 如下 三个 Oracle HOME:
1. RDBMS ORACLE_HOME: 这是 后台数据库用的。(我们稍后介绍)


2. 10.1.2 ORACLE_HOME : 又叫做Tools, C, or Developer ORACLE_HOME, 主要是给 FORMS 及 REPORTS 用的。(相当于 11i 里 的8.0.6 ORACLE_HOME。)


3. 10.1.3 ORACLE_HOME :又叫做 Web or Java ORACLE_HOME, 主要是给web server (Apache) 及 JAVA (OC4J )用的。( 相当于 11i 里 的iAS ORACLE_HOME)


关于OC4J的介绍可以参考博客:http://blog.csdn.net/cymm_liu/article/details/9987839

当看完上面的图片的时候你可能并不是很清晰到底10.1.2 和 10.1.3这两个ORACLE_HOME目录里到底有什么,或者说到底是什么样子,我用secureCRT的一个小工具叫secureFX可以打开linux下的文件目录结构图:

这样我们非常清晰的认识到了这两个ORACLE_HOME目录所负责的功能。




2.1    、基于html的应用

2.1.1    10.1.3目录

还没有讲完,我们单独拿出10.1.3这个oracle home来讲一下起其内部机构:

web services是指处理来自客户端的请求的一个组件(与他处于平行关系的是forms 和 reports的组件,在10.1.2中),包括下面三个部分:

Web Lisener(就是HTTP Sserver,apache提供的)

OC4J(用来运行java程序的容器)

OPMN(oracle process manager)

基于html的应用有如下特点:

1、没有form界面;2、纯html和javascript开发;3、通过执行java代码动态生成html页面;4、对固定的页面层,使用元数据数据字典;5、通过直接连接web服务器操作。


oracle applications server 可以分为oracle http server和j2ee的容器:


其中oracle http server 通俗的理解就是一个web listener,并且添加了一些组件,提供了信息传递到j2ee容器的功能, 一般就是apache 的web服务器。。。

j2ee的容器分为两种:一种叫web container用来运行jsp 和servelet的,能够提供请求的分配,请求并发控制,请求生命周期管理。提供了请求连接到jdbc 的一些组件等。。

还有一种叫:EJB(enterprise  java  bean) 它管理着所有的j2ee的应用程序(这些应用程序对数据库进行商业逻辑的操作)


oracle application Server 包含了下面三个驱动器,这些驱动器提供了到oracle数据库的高扩展高可靠的连接:

1)oracle JDBC drivers:oracle的JDBC驱动器,除了提供标准的JDBC api支持,还提供扩展的oracle指定的数据类型加强了性能。

2)J2EE Connectors:是j2ee平台的一部分,提供了一个基于java的解决方案,连接不同的应用程序服务器和企业信息系统。

3)DataDirect Connect  Type 4 JDBC drivers:数据直接的JDBC驱动,对于连接非oracle数据用的。



2.1.2    、oracle  application framework( 应用程序开发框架):


oracle applications framework :

oracle应用程序开发框架是基于html的开发平台,它是由一个: 基于java的应用程序层框架和相关的服务 组成,其设计的初衷是用来快速的部署基于html的应用程序。

BC4J(business component for java):被包括在JDeveloper中,用来创建java的business组件,以表示商业逻辑;它还提供了一个“java对象 到 表” 的映射机制。允许应用商业逻辑和用户界面的分离。

AOL/J:他连接数据库并提供给OAF服务。拥有特定的应用程序的功能。(一个可选的或者说是可替代这个AOL/J的组件叫做 oracle universal connection pool——UCP)。具体ucp的理解可以参照:http://blog.csdn.net/cymm_liu/article/details/9987839


针对HTML-Based 的应用, Oracle 开发 Oracle Applications Framework (OAF)。OAF 包括如下component:
- AOL Java (AOL/J)
- Business Components for Java (BC4J)
- Java Controller
- Metadata UI Definition
- UIX HTML Generator        

OAF 采用 J2EE 的 MVC (Model- View - Controller) 的 design pattern。 所以如果你用过J2EE MVC 开发,应该不难理解。比一般的 MVC 开发稍微复杂一点的是 HTML 页面的生成是由存在数据库里面的 metadata dictionary 控制。有关MVC分层架构的介绍参考:http://blog.csdn.net/cymm_liu/article/details/10008839

最后,我们在整体回顾一下HTML 页面服务的各个组件如何协同工作:

1)用户从浏览器里点击了一下一个按钮,这个按钮对应着一个函数功能。

2)浏览器转换成URL的访问请求到web listener。

3)web listener 去找OC4J(跑servelet的引擎),说客户要你执行某程序,或逻辑运算,并返回给客户结果。

4)Servelet会通过jsp程序去ebs的数据库的 metadata dictionary(元数据字典)取出一些表的数据,构造HTML页面。

5)HTML页面通过web server 返回给用户。

那么我们会继续往下想,JSP页面是怎么获得的ebs的数据呢?我们从上面的第4条继续引申:

1)AOL/J先确认用户要访问的page。

2)page 的定义信息(也就是元数据的UI定义信息(metadate UI definition))从数据库层的元数据仓库(metadata Repository)传送到应用层。

3)保存了应用逻辑和访问数据库的  BC4J对象 被实例化。

4)java的控制编程组件 根据动态UI规则来生成页面的定义

5)UIX(HTML UI Generator)解释页面的定义,根据UI标准创建响应的html,发送到浏览器。



2.2、 Forms的服务
R12 还有大量的 FORMS 界面,所以 在服务器上也有 Forms Services。

Forms Services 由如下4个组件:

1)Forms  Servlet:当一个用户开始了一个Forms的应用程序,Forms Servlet就是用来建立最初始的连接,它给客户端返回HTML文件,这些HTML文件中含有Forms Client applet(Applet是一种特殊的Java程序,它本身不能单独运行,需要嵌入在一个HTML文件中,借助浏览器或Appletviewer来解释执行)

2)Forms Client Applet:是在客户端浏览器里运行的一个java applet,它为相应的Forms 运行时进程(Runtime Process)提供了用户界面。

3)Forms LIstener Servelet:运行在OC4J servelet container中的servelet,它负责如下几件事,1、管理每个客户端的Forms运行时进程的生命周期;2、管理每个客户端连接到运行时进程的网络连接;3、通过Oracle Net 这种网络基础与oracle数据库进行交互;4、缓存客户端需要的数据,比如从数据库里取出了好多行,可以一行一行的发到客户端,其余的先缓存在这里面。

使用forms listener servlet有如下的好处:

1)重建删除的连接

2)少量的机器和多口暴露在防火墙外,简单的防火墙和代理(proxy)服务器的配置

3)在internet上更强健和安全的部署


4)Forms Runtime Process:在Oracle Application Server里运行的一个进程,这个进程维护者客户端applet和数据库的交互。


Oralce Application Server Forms Services Architecture:

我们通过分析一个请求的过程,来熟悉一下Forms Services 的结构:

1)用户打开浏览器,并且为Forms 应用程序点了对应的URL地址。

2)HTTP Listener 解释这个URL并显示一个HTML页面,这个页面包含一个 applet 标签,描述了指向浏览器的Forms Java Client。URL调用Forms Servlet动态的去创建HTML页面 。The HTTP Listener interprets the URL and displays an HTML page containing an <APPLET> tag that describes the Forms Java Client to the browser. The URL calls the Forms servlet to create the HTML page dynamically.

3)客户端接收到HTTP Listener 传送过来的HTML文件,这个HTML文件支持请求的信息 定位java类文件,这个java类文件构造Forms Java Client;这个HTML文件也包含了请求的forms 应用程序的信息,传递给Forms Session的参数(如登录信息等)。The client receives the HTML file served by the HTTP Listener. The HTML file supplies the information required to locate the Java class files that make up the Forms Java Client. The HTML file also contains information about the requested Forms application, as well as parameters that get passed to the Forms session, such as login information.

4)浏览器下载Forms Java Client 并启动Java Applet。

5)Forms Java Client Applet 通过HTTP Listener向Forms Listener Servlet 发送一个请求,去启动一个Forms Session。

6)Forms Listener Servlet收到Forms Java Client发送的请求后,为这个请求启动一个Forms Runtime Process。

7)Forms Runtime Process 把来自客户端的HTML文件指定的模块,还有库文件和菜单项等 获得过来。任何的Forms Java Client 和Forms Runtime Process的交互都是通过Forms Listener Servlet的。

8)用户被提示输入数据库的登录信息,连接到数据库服务器的连接建立。

9)现在用户可以用Forms Application 对数据进行操作了。




2.3、Concurrent Manager: 

并发管理器(concurrent manager)是并发处理的基础核心,承担了工作的计划和执行,它的本质是:

一个在oracle Application 中登记的可执行的程序库,作为操作系统的一个进程运行,运行的操作系统进程称为目标进程(target processes,一般叫做worker),在同一时间一个目标进程可以启动一个并发程序。

并发管理器,可以运行任何的并发程序,或指定待定的并发程序,通过“工作班次(work shift)” 来指定运行的日期和时间。


主要负责处理 batch job, 比如复杂的报表,涉及大量更新的处理等。用户在前台提交请求 ( concurrent request),请求会写到 数据库的表上去,然后,Concurrent Manager 就会读表,一个一个的进行处理。


EBS 有三个非常重要的master concurrent magagers:

Internal Concurrent Manager(ICM):它控制所有的其他的manager,可以说他就是老大,它在所有的manager运行之前运行。ICM主要的工作就是启动或者关闭其他的concurrent managers,或者重新启动那些失败的managers。


Standard Manager(SM):运行那些不在特定manager里运行的reports和batch jobs,那哪些是specific 的concurrent manager呢?包括:Inventory Manager,CRP Inquiry Manager,Receivables Tax Manager。


Conflict Resolution Manager (CRM):用不相容规则去检查并发程序的定义,然而,ICM也可以被配置的,接管CRM的工作去解决冲突。

TransactionManager   用来支持同步请求处理。通过使用管道的方式来同步客户端和服务器之间的通信,使用FND_TRANSACTION.SYNCHRONOUS功能来实现

更多关于Concurrent Manager的信息参考如下文档:http://download.csdn.net/detail/changyanmanman/5982825

Concurrent request的 log 或 output file 会 通过        Report Review Agent ($FND_TOP/bin/FNDFS)送到 FORMS Services,再有 FORMS Services 传给 用户的 browser。
Report Review Agent的详细内容可参看 :
《The Basics About Report Review Agent (FNDFS) on 11i (Doc ID 111383.1)》。


2.4、Admin Server

admin server是指用来维护数据库和数据模型的那个节点。

1.使用adpatch工具应用数据库层操作的补丁(d-driver)。(貌似这句话说的有问题,以我现在的理解,adpatch只是针对应用的各个模块的,而opatch才是针对三个oracle home的)

2.使用adadmin工具维护应用数据。





网友评论

登录后评论
0/500
评论
长烟慢慢
+ 关注