Published using Google Docs
将ADF应用部署为Shared Library
Updated automatically every 5 minutes

JDeveloper & ADF Ver. 11.1.1.2.0

DB Ver. XE

在一个典型的ADF开发中,通常开发者会依据功能开发大量taskflow,并将其部署为多个ADF Library Jar File,再在主应用中引用这些已经开发完成的ADF jar,并将主应用打包为EAR进行发布。这种开发方式有效的减低了开发人员需要进行协作的开发量,但当打包为Jar加入主应用的某功能需要更新时,必须重新发布主应用。而Weblogic提供允许将war/ear部署为Application或Shared Library,依此特性,可将开发完成的功能Jar部署为多个Shared Library,主应用引用各Shared Library。当需要进行功能的更新时,只需重新部署Shared Library即可。

本例中将开发3个Application,分别为:

本例中将使用Oracle XE自带HR schema,并在Weblogic中建立jndi为jdbc/HRDS的数据源。

源代码下载

  1. Demo_EmployeeApp为一个简单的ADF应用,包含将HR schema中Employees表数据以树状展开的功能。应用开发不再详述,这里只介绍打包为Library Jar File的步骤。
  1. 双击AppModule,选择Configurations,设置Shared和Local两个连接均使用JNDI Datasource,并配置连接字符串为jdbc/HRDS或java:jdbc/HRDS,注意不能使用默认的java:comp/env/jdbc/HRDS。

  1. 双击ViewController项目,进入项目属性设置页面,选择Deployment,新建部署配置文件,类型为ADF Library Jar File

  1. 设置部署配置文件中Connections,选择Connection Name Only。

  1. 关闭项目属性设置窗口,右键点击ViewController项目,选择Deploy > 上一步创建的profile,则可将Demo_EmployeeApp应用部署为jar包。
  1. 创建Demo_ToLib应用
  1. 在JDeveloper中新建Generic Application,并新建Project名为ToLib
  2. 在文件系统中进入ToLib项目所在文件夹,分别新建文件路径public_html/WEB-INF/lib及src/META-INF

  1. 将第一步创建的Demo_EmployeeApp.jar复制入WEB-INF/lib目录,在META-INF目录下创建名为MANIFEST.MF的文件,内容如下

Manifest-Version: 1.0
Created-By: derek.jaa
Implementation-Title: derek.jaa
Extension-Name: dj.demo.libapp
Specification-Version: 1.0.1
Implementation-Version: 1.0.0
Implementation-Vendor: derek.jaa


注意Extension-Name字段,该字段用于指定应用以Shared Library形式部署在Weblogic上的名称。其他字段参考Jar规范。

  1. 双击ToLib项目,进入项目属性设置页面,选择Deployment,新建部署配置文件,类型为WAR File

  1. 编辑部署配置文件,首先设置General中Specify Java EE Web Context Root为空

  1. 设置WAR Options,勾选Include Manifest File,并添加之前创建的MANIFEST.MF至列表

  1. 选择 File  Groups > WEB-INF/lib > Filters,勾选加入的Demo_EmployeeApp.jar

  1. 选择Library Dependencies,勾选加入的Demo_EmployeeApp.jar

  1. 选择Profile Dependencies,勾选加入的Demo_EmployeeApp.jar

  1. 点击OK保存退出,右键点击ToLib项目,选择Deploy > 之前创建的部署配置文件,选择Deploy to Application Server,点击Next,选择需要部署至的Weblogic Server及Deploy as a shared Library

  1. 点击Finish完成部署,登入Weblogic console,可查看到部署的Shared Library

  1. 创建Demo_Main应用,该应用为ADF应用
  1. 依据向导创建ADF应用,由于本次示例主应用不需要Model层,因此创建完成后删除Model项目,并双击ViewController项目,选择Dependencies,删除对Model项目的依赖

  1. 由于项目需要编译,因此需要将引用的Shared Library中的Jar包夹入主项目。选择Library and Classpath,以Add JAR/Directory形式加入Demo_EmployeeApp.jar

  1. 由于Demo_EmployeesApp.jar已存在于Shared Library中,因此部署Demo_Main时不需要部署该Jar文件。选择Deployment,编辑部署为WAR的部署配置文件,选择File Groups > WEB-INF/lib > Filters,不勾选Demo_EmployeeApp.jar。

  1. 在ViewController中创建页面index.jspx,在Component Palette下拉列表中选择Demo_EmployeeApp.jar,展开Regions,将需要引用的taskflow拖入页面

  1. 在ViewController项目WEB-INF目录中创建Weblogic Deployment Descriptor (weblogic.xml)

  1. 编辑weblogic.xml中的Libraries项,新增上一步创建的ToLib项目部署后在Weblogic Console中查看到的名称。这里使用dj.demo.libapp

  1. 展开Application面板中Application Resources,展开Descriptors > META-INF,编辑weblogic-application.xml的Libraries项,新增上一步创建的ToLib项目部署后在Weblogic Console中查看到的名称。这里使用dj.demo.libapp。
    [最佳实践]当同一服务器上的多个Enterprise Application引用同一个Shared Library时,可能因为Context Root名称重复造成应用启动失败,亦可在此处声明Library Name对应的Context Root。建议在引用Shared Library时声明特别的Context Root。

  1. 右键点击Application面板中Demo_Main,编辑应用属性

  1. 选择Deployment,不勾选Auto Generate and Synchronize weblogic-jdbc.xml Descriptors During Deployment

  1. 右键点击Application面板中Demo_Main,选择Deploy,将应用部署至已部署Shared Library的应用服务器中。通过浏览器访问URL进行测试。